Invalid Address specified to RtlFreeHeap
와 같은 에러가 발생할 때가 있습니다.
주로 DLL을 이용한 프로그램을 만들때에 이런 에러가 발생하는데요.
이거가지고 삽질을 많이 하다가 해결 방법을 발견했습니다.
간단히 답만 말씀드리면
프로그램에서 사용하는 DLL들과 메인 프로그램 모두의 설정을 다음과 같이 바꿔주어야 합니다.
Setting -> C/C++ --> Code Generation --> MultiThreaded DLL (Debug모드일 경우 MultiThreaded DLL Debug)
그러면 위와 같은 에러가 없어집니다.
해결 방법은 여기에서 발견했습니다^^
주절주절 내용들이 많은데 제가 이해한 바로는
MultiThreaded 로만 할 경우 각각의 DLL과 프로그램이 Heap을 따로 사용하고
MultiThreaded DLL로 하면 모든 DLL과 프로그램들이 Heap을 하나로 사용한다... 인데요.
전자의 경우로 하면 Heap이 다르기 때문에 A라는 DLL에서 메모리를 할당하고 B라는 DLL에서 그 할당한 메모리를 해제할 경우 오류가 발생한다는 내용인 것 같습니다.
혹시 제가 잘못 이해한 것이 있거나, 다른 해결 방법이 있다면 알려 주세요^^
'Talk > IT' 카테고리의 다른 글
| 구글의 서비스들 (0) | 2006/10/12 |
|---|---|
| Software Wars (2) | 2006/07/24 |
| Invalid Address specified to RtlFreeHeap (2) | 2006/07/21 |
| 파일 및 디렉토리 접근 함수 (0) | 2006/06/22 |
| htaccess를 이용한 폴더 접근 권한 설정 (0) | 2006/06/22 |
| DMA 설정 (0) | 2006/06/22 |




Code Generation 섹션에서 Struct Member Alignment 값이 달라도 저런 에러를 만나더군요. 전 한 3일 고생하다가.. 오늘에서 님 블로그 힌트보고 알아냈네요... ^^;;;
2009/01/15 20:33parasign.tistory.com (제 블로그) 에 살짝 더 자세한 내용있으니 구경오세요~ ^^
그렇군요^^ 잘 구경했습니다^^
2009/01/16 15:30