2013-02-05 17 views
0
myObj* var = new myObj; 
var = other1; 

不需要它了何時刪除C /解引用++

delete var; 
var = new myObj; 
var = other2; 

爲什麼不能只是代替取消引用刪除並重新分配?

var->other2; 
+0

*爲什麼不能只是取消引用而不是刪除和重新分配?*我一直在閱讀,試圖理解它,但是什麼? – thang

+0

@thang將指針的值設置爲其他值。 – onepiece

+0

http://en.wiktionary.org/wiki/dereference *可以訪問指針所指向的內容。*?這就是你要使用的解除引用? – thang

回答

0

你的問題很愚蠢,絕對沒有意圖。換句話說,你在這裏有一個潛在的困惑,這不能通過簡單的回答來解決。

我強烈建議您閱讀C或C++的入門教材。網絡充滿了優秀的講座和免費的電子書。你不會後悔的!

谷歌周圍:)也許,你會回來在幾天內回答你自己的問題。

快樂編碼!

2

取消引用,並不意味着刪除:http://en.wikipedia.org/wiki/Dereference

我建議你去通過關於C++的一些教程,你似乎有什麼很多的詞彙,其實就是一種誤解。

請記住使用谷歌。

0

其他人對你對術語的困惑發表了評論。我會評論你的代碼。

當你這樣做:

myObj* var = new myObj; 
var = other1; 

你創建一個memory leaknew myObj爲結構分配內存,並將var設置爲指向那裏。當您重新分配var時,您不再有指向分配結構的變量。 C++沒有自動垃圾收集功能,所以這個內存不再可用,但是你也沒有一個變量,你可以使用這個變量來與delete一起回收它。

var = other1重新指定指針,它確實不是複製內容;如果要複製的結構,你必須寫:

*var = *other1; 

當你然後做:

delete var; 

你不刪除原有的結構,你刪除任何other指出。這僅在使用new創建該結構時纔有效。

你肯定需要回頭查看C++中指針的所有指令材料。