首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

FreeLibrary不能完全Free,咋回事

2012-02-10 
FreeLibrary不能完全Free,怎么回事?发现调用DLL后,程序的内存的占用越来越大。原先以为是没有delete,后来就

FreeLibrary不能完全Free,怎么回事?
发现调用DLL后,程序的内存的占用越来越大。原先以为是没有delete,后来就用最简单的FORM试了下,发现随着调用次数的增多,内存的耗用稳步地增加。
DLL.cpp(Project1.dll):

C/C++ code
extern "C" void _stdcall ShowImage(void);int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved){    return 1;}//---------------------------------------void _export _stdcall ShowImage(void){  Form1 = new TForm1(NULL);//Form为最简单的Form,只有一个关闭按钮,  Form1->ShowModal();//  Form1->Destroying();  delete Form1;}

UseDll.cpp
C/C++ code
//---------------------------------------void __fastcall TForm1::Button1Click(TObject *Sender){   HINSTANCE dd;   int _stdcall (*ddd)(void);   dd = LoadLibrary(L"Project1.dll");   ddd = GetProcAddress(dd,"ShowImage");   ddd();   FreeLibrary(dd);}

调用dll前:1632k
调用dll时:3392k
释放dll后:1752k(增加了120k)

还有,在DEBUG时,关闭程序后会出现access violation 32acfa94的异常错误。Release不会出现异常。

[解决办法]
静态调用再试试。

热点排行