2009-11-10 5 views
3

Delphi 2009 응용 프로그램에서 C DLL을 호출하고 GetMem 또는 AllocMem에 의해 할당 된 메모리가 DLL에 전달 될 때 오류가 계속 발생합니다. 이 오류를 피할 수있는 유일한 방법은 msvcrt.dll의 malloc을 사용하는 것입니다. malloc은 내장 메모리 루틴이 아니라, 내장 된 것들을 어떻게 작동시킬 수 있습니까? 나는 내장 메모리 관리자를 우회하는 것을 정말로 좋아하지 않는다.GetMem 대신 malloc을 호출하면 프로그램이 중단되는 이유는 무엇입니까?

+1

어떤 종류의 오류가 발생합니까? C dll이 전달한 메모리를 해제하거나 다시 할당하려고 시도하지 않는 한 아무런 문제가 없어야합니다. 실제로 수행하면 안됩니다. –

+0

불행히도 "안된다"와 "그렇지 않다"는 서로 다른 것들이며 너무나 자주 그렇게 있습니다. – qid

+1

해답을 가져 주셔서 감사합니다. dll에는 메모리를 제어하는 ​​옵션이 있으며 사용하고 있습니다. 메모리를 제어하기 위해 함수를 다시 작성하겠습니다. –

답변

4

DLL이 해당 메모리를 해제하거나 메모리 할당을 조작하려고 시도하면 (예 : 확장/축소) 해당 설명이됩니다. 메모리 할당 시스템을 혼합하는 것은 권장되지 않습니다.

0

전화 협약, stdcall 또는 cdecl 에주의하십시오.

관련 문제