由於我在嘗試使用DLL時遇到了很多困難,因此我決定嘗試運行時包(主要是爲了避免內存管理器和類型註冊表問題)。包內存管理
從我的應用程序做這樣的事情:
HandleList := TList <THandle>.Create;
try
PackageObj.DoSomething (HandleList);
finally
FreeAndNil (HandleList);
end;
的方法(運行時包中),只是增加了一些東西到列表:
procedure TPackageObject.DoSomething (HandleList: TList <THandle>);
begin
HandleList.Clear;
HandleList.Add (0);
end;
我得到Invalid Pointer
例外,無論是在請致電Clear
或打電話給FreeAndNil
。訪問違規行爲也時有發生。
使用FastMM時,有時會報告「塊標題已損壞」。
內存分配或釋放時總是發生錯誤,即向列表添加內容並因此導致列表動態增長。
是HandleList
對象被傳遞給包的方式,並返回好嗎?是否有重要的知道包和內存管理?還是必須把錯誤放在別的地方?
編輯在錯誤可能在其他地方的情況下,我該如何調試這樣的東西?任何經驗?
沒問題,也沒有問題。除非通用的東西在玩弄你。您使用的是什麼Delphi版本,以及您如何設置FastMM – 2010-02-22 11:06:10
我正在使用D2010和FastMM的FullDebugMode。 – jpfollenius 2010-02-22 11:12:47