반응형
MFC Application 에서 dll 의 함수에 CStringArray& 를 이용하여 변수를 참조로 전달하고, 결과값을 CStringArray 로 받아오는 코딩을 하였다.
즉 dll 에서 CStringArray 에 입력할 값을 할당한 경우였다.
그런데 지역함수를 빠져나갈 때 Heap Violation 이 발생하여 검색을 하니 관련 정보를 찾을 수 있었다.
( http://stackoverflow.com/questions/7309277/heap-violations-when-releasing-a-cstringarray-parameter-from-a-dll-exported-fun)
이것을 해결하려면 즉 CStringArray 같은 MFC Object 를 exe/dll 간에 사용하려면 MFC Extension DLL 을 사용하여야 한다.
MFCx0.dll and all extension DLLs loaded into a client application's address space use the same memory allocator, resource loading, and other MFC global states as if they were in the same application. This is significant because the non-MFC DLL libraries and the regular DLLs do the exact opposite and have each DLL allocating out of its own memory pool.
MFC extension DLL 은 Client Application의 address 공간에 같은 memory allocator 를 사용한다고 한다.
그런데 non-MFC DLL 은 반대라고 하니, 이것이 heap allocation error 의 원인이였다. (Access violation executing location 0xFEEEFEEE )
즉 dll 에서 CStringArray 에 입력할 값을 할당한 경우였다.
그런데 지역함수를 빠져나갈 때 Heap Violation 이 발생하여 검색을 하니 관련 정보를 찾을 수 있었다.
( http://stackoverflow.com/questions/7309277/heap-violations-when-releasing-a-cstringarray-parameter-from-a-dll-exported-fun)
이것을 해결하려면 즉 CStringArray 같은 MFC Object 를 exe/dll 간에 사용하려면 MFC Extension DLL 을 사용하여야 한다.
MFCx0.dll and all extension DLLs loaded into a client application's address space use the same memory allocator, resource loading, and other MFC global states as if they were in the same application. This is significant because the non-MFC DLL libraries and the regular DLLs do the exact opposite and have each DLL allocating out of its own memory pool.
MFC extension DLL 은 Client Application의 address 공간에 같은 memory allocator 를 사용한다고 한다.
그런데 non-MFC DLL 은 반대라고 하니, 이것이 heap allocation error 의 원인이였다. (Access violation executing location 0xFEEEFEEE )
반응형
'IT > C++' 카테고리의 다른 글
[MFC] 심플한 로그 함수 (0) | 2016.10.18 |
---|---|
[MFC] CProgressCtrl Marquee 속성 설정 (0) | 2016.10.14 |
[MFC] 재부팅 기능 (0) | 2016.10.13 |
Visual Studio 2012 Update 4 이상에서 XP 용 C++ 11 프로그램 구성 (0) | 2016.10.12 |
[MFC] 프로세스를 이미지 이름으로 검색하여 종료를 기다리기 (0) | 2016.10.07 |
제어판 Item 실행 (0) | 2016.09.27 |
_tcscpy_s 사용시 주의사항 (0) | 2016.09.10 |
32bit application 에서 64bit registry 읽기 (0) | 2016.09.07 |
MFC OnDraw (0) | 2016.04.30 |
setParent 에 대해서 (0) | 2010.06.22 |
댓글