我想了解Delphi如何管理內存,我從Marco Cantu那裏讀到它使用像Java這樣的引用。Delphi對象參考模型
我明白,一個變量(比如說var theObj: TSomeClass;
)持有一個引用(=一個指針)來指示存儲對象的內存位置。所以當我調用theObj
的構造函數時,我在堆上創建類,然後Obj是一個指向新創建位置的指針。
到目前爲止好,但現在我有疑問。他說:
在某些OOP語言中,聲明類類型的變量會創建該類的 實例。
這是否意味着指向內存位置的指針是而不是?我的猜測是,在這裏你聲明一個變量,它直接創建對象而不使用堆。那麼這個變量是否只能在堆棧上創建,並且保存了該類的所有數據?
注意。上面的猜測和問題是由於我與C++做了比較而做出的。
- 德爾福:
theObj := TSomeClass.Create
- C++:
TSomeClass *theObj = new TSomeClass;
不打算偏離主題和C的交談++(這只是作爲例子,我只知道這種語言作出比較),但在這裏都在堆中創建對象的情況下,我有一個指向它的指針。我之前提出的第二個問題是因爲這個:在C++中,我也可以創建一個像這樣的對象,它將一直存在直到函數的作用域結束。
在德爾福我不能。我認爲,當他說「聲明一個類類型的變量創建該類的一個實例」時,marco指的是這樣。我對麼?
我想你可能會讀他錯了,當他說「在一些OOP語言中,聲明一個變量......」時,他正在區分這些語言和Delphi。在接下來的句子中,他說:「Delphi是基於對象參考模型的。注意**代替**。 – MartynA