我有很多內存分配和相同數量的FreeMem調用。我之前沒有的是在調用freemem之前查看指針是否爲零,並且釋放一行以將指針設置爲nil之後進行檢查。使用單個函數的Delphi中的空閒內存和零
我試圖創建一個函數來做到這一點
procedure FreeMemAndNil(p: Pointer; size: Integer = -1);
begin
if p <> nil then
begin
if size > -1 then
FreeMem(p, size)
else
FreeMem(p);
p := nil;
end;
end;
但是有一個問題。它不能將原始指針設置爲nil,因爲該參數不是可變的(var p:Pointer)。我不能使用var,因爲如果我做的編譯器抱怨類型必須是完全相同的類型(指針)。我傳遞的指針可能是指向任何類型的指針(PChar,常規指針等)。
我能做些什麼來解決這個問題?有更好的解決方案嗎?
有'FreeAndNil' http://www.delphibasics.co.uk/RTL.asp?Name=FreeAndNil – Andrey 2010-08-11 17:29:56
@Andrey FreeAndNil只適用於對象。我正在處理手動分配給指針的內存。謝謝你的意見。 – Daisetsu 2010-08-11 17:35:37