3 回答

TA貢獻(xiàn)1811條經(jīng)驗 獲得超5個贊
是的,這是記錄在案的行為:
對象字段始終初始化為0,0.0,'',F(xiàn)alse,nil或任何適用的值。
全局變量也始終初始化為0等;
本地引用計數(shù)*變量始終初始化為nil或'';
本地非引用計數(shù)*變量未初始化,因此您必須先分配一個值才能使用它們。
我記得Barry Kelly某個地方為“引用計數(shù)”寫了一個定義,但是找不到它,所以這應(yīng)該在此期間做:
reference-counting ==自行引用計數(shù),或直接或間接包含引用計數(shù)的字段(用于記錄)或元素(用于數(shù)組):
string, variant, interface
或包含此類型的動態(tài)數(shù)組或靜態(tài)數(shù)組。
筆記:
record
本身不足以成為參考計數(shù)我還沒有嘗試使用泛型

TA貢獻(xiàn)1790條經(jīng)驗 獲得超9個贊
沒有顯式初始值設(shè)定項的全局變量在可執(zhí)行文件的BSS部分中分配。它們實際上并沒有占用EXE中的任何空間; BSS部分是OS分配并清除為零的特殊部分。在其他操作系統(tǒng)上,有類似的機(jī)制。
您可以依賴零初始化的全局變量。

TA貢獻(xiàn)1796條經(jīng)驗 獲得超10個贊
以下是Ray Lischners Delphi在Nutshell?第2章中的引用
“當(dāng)Delphi首次創(chuàng)建一個對象時,所有字段都開始為空,即指針初始化為nil,字符串和動態(tài)數(shù)組為空,數(shù)字值為零,布爾字段為False,Variants設(shè)置為Unassigned。 (有關(guān)詳細(xì)信息,請參閱第5章中的NewInstance和InitInstance。)“
確實需要初始化本地范圍內(nèi)的變量...我會將上面的注釋“全局變量初始化”視為可疑,直到提供參考 - 我不相信。
?Barry Kelly說你可以依賴它們進(jìn)行零初始化,而且因為他在Delphi編譯器團(tuán)隊中,我相信這就是:)
- 3 回答
- 0 關(guān)注
- 974 瀏覽
添加回答
舉報