Почему моя программа перестает работать, если я вызываю malloc вместо GetMem? - PullRequest
3 голосов
/ 10 ноября 2009

Я вызываю C DLL из приложения Delphi 2009 и продолжаю получать ошибки, когда память, выделенная GetMem или AllocMem, передается в DLL. Единственный способ избежать этих ошибок - использовать malloc из msvcrt.dll. Что делает malloc, а не встроенные подпрограммы памяти, и как я могу заставить работать встроенные? Мне действительно не нравится обходить встроенный менеджер памяти.

Ответы [ 2 ]

4 голосов
/ 10 ноября 2009

Если DLL когда-либо попытается освободить эту память или иным образом манипулировать выделением памяти (например, расширить / сжать ее), это объяснит это. Смешивать системы выделения памяти не рекомендуется.

0 голосов
/ 11 ноября 2009

Обратите внимание на Calling Convention, stdcall или cdecl ,

...