在主程式可運行,但掛載至DLL檔案後,卸載時會出現記憶體溢位問題 |
尚未結案
|
clps1008
一般會員 發表:1 回覆:0 積分:0 註冊:2017-11-07 發送簡訊給我 |
如題,用BCB元件寫一個簡單的讀檔並用DLL掛載的函式,已用過其他DLL檔(回傳加減乘除,或是修改LABEL),因此不是運作DLL檔本身的問題,該函式放在主程式執行也是沒有問題,但用DLL掛載後,讀取檔案時候,若檔案大小大了一點 (約100KB以上)時候,在EXE關掉就會出現記憶體過載的問題,反覆檢查找不到問題點,請各位大神解惑
附上DLL程式: void __declspec(dllexport)__stdcall SG_read(TStringGrid *sg, TOpenDialog *OpenDialog1) { TStringList *sl = new TStringList; int i=0, j=0; // 歸零 for (i = 0; i < sg->RowCount; i ) sg->Rows[i]->Clear(); // 讀檔 if (OpenDialog1->Execute()) { sl->LoadFromFile(OpenDialog1->FileName); } // 讀入StringGrid,並用分隔符號隔開 sg->RowCount = sl->Count 1; j = 0; for (int row = 0; row < sl->Count; row ) { for (int col = 1; col < sl->Strings[row].Length(); col ) { if (sl->Strings[row].SubString(col, 1) == "\t") { j ; } else { sg->Cells[j][row] = sg->Cells[j][row] sl->Strings[row] .SubString(col, 1); if (sg->Canvas->TextWidth(sg->Cells[j][row]) > sg->ColWidths[j] 10) { sg->ColWidths[j] = sg->Canvas->TextWidth(sg->Cells[j][row]) 20; } } } j = 0; } delete sl; //釋放記憶體 } 有引用#include 確定可以跑GRID
------
新手新鮮人一枚 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |