第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

delphi變量是否默認(rèn)使用值初始化?

delphi變量是否默認(rèn)使用值初始化?

holdtom 2019-09-02 09:12:13
我是Delphi的新手,我一直在運行一些測試來查看默認(rèn)情況下初始化了哪些對象變量和堆棧變量:TInstanceVariables = class  fBoolean: boolean; // always starts off as false  fInteger: integer; // always starts off as zero  fObject: TObject; // always starts off as nilend;這是我習(xí)慣使用其他語言的行為,但我想知道在Delphi中依賴它是否安全?例如,我想知道它是否可能依賴于編譯器設(shè)置,或者可能在不同的機(jī)器上以不同的方式工作。依賴于對象的默認(rèn)初始化值是正常的,還是在構(gòu)造函數(shù)中顯式設(shè)置所有實例變量?至于堆棧(過程級)變量,我的測試顯示單位化布爾值為真,單位化整數(shù)為2129993264,未初始化對象只是無效指針(即不是nil)。我猜測規(guī)范是在訪問它們之前始終設(shè)置過程級變量?
查看完整描述

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ù)

  • 我還沒有嘗試使用泛型


查看完整回答
反對 回復(fù) 2019-09-02
?
富國滬深

TA貢獻(xiàn)1790條經(jīng)驗 獲得超9個贊

沒有顯式初始值設(shè)定項的全局變量在可執(zhí)行文件的BSS部分中分配。它們實際上并沒有占用EXE中的任何空間; BSS部分是OS分配并清除為零的特殊部分。在其他操作系統(tǒng)上,有類似的機(jī)制。

您可以依賴零初始化的全局變量。


查看完整回答
反對 回復(fù) 2019-09-02
?
白衣染霜花

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)隊中,我相信這就是:)

查看完整回答
反對 回復(fù) 2019-09-02
  • 3 回答
  • 0 關(guān)注
  • 974 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號