loadlibrary,freelibrary 同一個dll,非常多次,會出現error |
尚未結案
|
seannjaj
一般會員 發表:2 回覆:2 積分:0 註冊:2002-12-24 發送簡訊給我 |
loadlibrary,freelibrary 同一個dll,非常多次,會出現runtime error 203 而dll ,是用bcb new ->dll wizard ,default ->use c++ ,use vcl new 完後,有改變設定 Project->Options->Linker->Use dynamic RTL ,勾勾拿掉
再來就是Project->Options->packages->Build with runtime packages 一樣勾勾拿掉
然後直接build 出test.dll,dll 的部份就這樣 ap 部份我是拉個button 出來用
code 部份
void __fastcall TForm1::Button1Click(TObject *Sender)
{
for(int i=0;i<3000;i )
{
HINSTANCE DLLInst = LoadLibrary("test.dll"); FreeLibrary (DLLInst);
DLLInst=NULL; }; }
ap就只有這樣
run ap,我是打開windows 工作管理員,看ap memory 使用情形
每load free dll ,memory 就會一直成長,愈來愈多,出現runtime error 203 的時間不一定 但是同樣的ap,load vc 產生的dll 就不會這樣問題,我是用bcb 6 update 4
請問各位前輩們,有解嗎?我是bcb 初學者,謝謝
|
tylin123
初階會員 發表:33 回覆:53 積分:32 註冊:2003-05-19 發送簡訊給我 |
|
seannjaj
一般會員 發表:2 回覆:2 積分:0 註冊:2002-12-24 發送簡訊給我 |
引言: 由程式中看起來似乎沒有錯,但是有一個問題是在迴圈中 LoadLibrary 與 FreeLibrary 之間沒有任何的處理程序或延滯,有可能 LoadLibrary 尚未完全載入就又被 FreeLibrary 釋放,因此有可能會產生釋放一個不存在的記憶體空間.void __fastcall TForm1::Button1Click(TObject *Sender) { for(int i=0;i<3000;i ) { HINSTANCE DLLInst = LoadLibrary("test.dll"); Sleep(1000); FreeLibrary (DLLInst); DLLInst=NULL; }; } sleep 1 s 還是一樣繼續吃memory 謝謝 sorry 再強調一次好了,vc build 出的dll 不會有此現像 發表人 - seannjaj 於 2005/08/31 15:18:54 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |