我試圖從dll函數返回我自己的對象(從TCollection派生)。我使用FastMemoryManager,但沒有成功...所以我試圖返回一些對象的動態數組。
當然在dll函數中設置數組的長度。 它工作很好,但分配的內存不釋放。
(我用Windows tarsk管理器測量)。有沒有可能如何釋放動態數組? ,其調用的DLL功能是在線程,並且在最後,我有如下的步驟:返回TCollection或從DLL的對象數組
for i := 0 to length(MyObjectArray) - 1 do begin
if MyObjectArray[i] <> nil then
MyObjectArray[i].Free;
end;
Setlength(MyObjectArray, 0);
MyObjectArray := nil;
如果我用Setlength代替(MyObjectArray,0)和MyObjectArray:=零,
FreeAndNil (MyObjectArray)引發異常。
什麼建議嗎?
從你[上一個問題](http://stackoverflow.com/questions/3529039/delphi-plugin-framework),我以爲你會決定*不*使用DLL。是什麼讓你決定使用它們呢? – 2010-09-14 14:26:53
這個問題與其他一些項目有關,要簡單得多。我只是想將一些函數從exe移到dll,而不在它們之間傳輸大數據。我的另一個問題,你在你的評論中提到的,關注於項目,我需要TFrames和TForms作爲MDI孩子等嵌入到主應用中。所以BPL或其他替代品仍然是實際的;) – Peter 2010-09-14 16:27:51