我在 c/c++ dll 中分配内存有问题,并用 delphi 调用它,像这样:
用 c/c++ 创建一个 dll
#include "MemTestDll.h"
extern "C" EXPORTAPI char* __cdecl Test()
{
char* str=new char[1024*1024*2];
return str;
}
然后在德尔福:
function Test():PAnsiChar; cdecl; external 'MemTestDll.dll';
procedure TForm3.btn3Click(Sender: TObject);
var
ptr:PAnsiChar;
begin
ptr:=Test();
//FreeMem(ptr); // crash
//SysFreeMem(ptr) //crash too
end;
我看任务管理器,每次点击都会泄露8KB内存。
我怎样才能释放ptr?FreeMem 这个指针会使应用程序崩溃
我在 C/C++ dll 中分配了 1024*1024*2 字节,为什么它显示泄漏 8KB?