我只是在想當我們在C++中使用free()
和new
時會發生什麼。我們是否有C++中的晃動對象的概念
如果我們使用free()
和new
,則內存可以被釋放。它只是析構函數不會被調用。離開行爲類似於懸掛指針。
我知道上面我們不應該使用free()
和new
,因爲它可能會破壞堆。
但是我也想從概念上想象行爲。
我只是在想當我們在C++中使用free()
和new
時會發生什麼。我們是否有C++中的晃動對象的概念
如果我們使用free()
和new
,則內存可以被釋放。它只是析構函數不會被調用。離開行爲類似於懸掛指針。
我知道上面我們不應該使用free()
和new
,因爲它可能會破壞堆。
但是我也想從概念上想象行爲。
在由new
分配的內存上使用free
是未定義的行爲。不能保證new
返回從malloc
返回的地址。 (實際上,new[]
通常不會。)
+1,不能保證內存來自'malloc'! –
「我只是在想當我們在C++中使用free()和new()時會發生什麼。」沒有意義。這是未定義的行爲。根本沒有理由甚至打擾它。 –
我沒有聽說過你描述的情況的具體術語。我只希望有人說內存被回收了,但是析構函數沒有觸發...... –