1
我有一個回調過程:如何使本地數組成爲一個持久的數組?
type
TInitCallback = procedure (var Data: Pointer);
的想法是,經過初始化Data
可能指向任何東西。
我一直在努力,這個過程中的方式分配給回調和init Data
,它應該指向一個新創建的數組:
type
TBoolArray = array of Boolean;
procedure InitData(var Data: Pointer);
var
BoolArray: TBoolArray;
i: Integer;
begin
SetLength(BoolArray, 10);
for i := 0 to Length(BoolArray) - 1 do
BoolArray[i] := False;
Data := BoolArray;
end;
不過,我不知道,引用計數器增加數組分配時:Data := BoolArray;
。換句話說 - 我不確定該陣列在離開該程序後還是在內存中,還是被釋放了?因爲在稍後的程序執行中,當我改變其他結構(與該數組無關的記錄)中的數據時,此更改會在先前分配的數組(Data)中進行更改。
對此的一種解釋是數組的內存在離開回調時被釋放,並再次用於記錄。
那麼,在保留InitData回調後數組是否保持分配?如果沒有,如何讓它保持分配。請不要說我不想更改我的回調的簽名,我不能引入任何新的參數或將其更改爲函數。
謝謝。