如何在delphi应用程序中释放c dll中的内存分配

如何在delphi应用程序中释放c dll中的内存分配,第1张

概述我在c / c dll中使用mem分配问题并用delphi调用它, ……这样: 用c / c创建一个dll #include "MemTestDll.h"extern "C" EXPORTAPI char* __cdecl Test(){ char* str=new char[1024*1024*2]; return str;} 然后在德尔福: function Test( 我在c / c dll中使用mem分配问题并用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 tooend;

我看到任务管理器,每次点击都会泄漏8 KB内存.

>我如何发布ptr? FreeMem这个指针会使应用程序崩溃
>我在C/C++ dll中分配1024 * 1024 * 2字节,为什么它显示泄漏8KB?

解决方法 跨越DLL边界使用动态内存的规则是,分配内存的人也必须释放它.您不能在DLL中分配内存,然后在DLL外部释放它.所以你应该在你的DLL中提供另一个释放指针的函数. 总结

以上是内存溢出为你收集整理的如何在delphi应用程序中释放c dll中的内存分配全部内容,希望文章能够帮你解决如何在delphi应用程序中释放c dll中的内存分配所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1248806.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-07
下一篇2022-06-07

发表评论

登录后才能评论

评论列表(0条)

    保存