記錄型別中String的釋放

2021-06-20 23:38:02 字數 879 閱讀 3110

string能自動釋放,在進行記憶體拷貝時需要進行手動釋放。可以直接呼叫finalize手工釋放

如:tgraphichidetab 記錄中宣告的caption:string

tgraphichidetab = record

image:integer;

data:integer;

size:integer; /// 繪製時使用的尺寸

caption:string; /// <--- 記錄中有string

end;

直接記憶體處理的時候string不會自動處理計數,需要手工處理string。

var 

fitems:array of tgraphichidetab;

fcount:integer;

procedure deleteitem(aindex: integer);

begin

///

/// 使用記憶體移動的時候string計數不會改變,因此需要手工處理string的計數

///if (aindex >= 0) and (aindex < fcount) then

begin

finalize(fitems[aindex]); // <-- 手工釋放record中的string

if aindex < fcount - 1 then

move(fitems[aindex + 1], fitems[aindex], sizeof(tgraphichidetab) * (fcount - aindex - 1));

dec(fcount);

end;

end;

XML中的String型別

xml中的string型別定義 string,字串。可以包含回車符,換行符,製表符.qname qualified name 有字首名稱型別。字首和區域性名稱必須都是ncname型別,中間用冒號連線.normalizedstring,規範化字串型別。string中回車符 換行符 製表符將被去掉 to...

lua中的string型別

在lua中用union tstring來表示字串型別 其中結構體tsv中 reserved欄位表示字串是不是保留關鍵字,hash是其雜湊值,len是其長度。我們在tstring中沒有看到lua將字串的內容存在任何地方啊,其實lua是將內容同一存在了另乙個地方,global state中的strt裡面...

理解C 中的string型別

本文的目的在於揭示和dotnet及c 相關的一些常見的和不常見的問題。在這些問題中我的第一篇文章和string資料型別有關,string資料型別是一種引用型別,但是當和其他引用型別比較的時候,很多開發人員可能並不能完全理解它的行為。問題對於常見的引用型別,當改變乙個物件別名的值時,這種變化也同樣會在...