myObj* var = new myObj;
var = other1;
不需要它了何時刪除C /解引用++
delete var;
var = new myObj;
var = other2;
爲什麼不能只是代替取消引用刪除並重新分配?
var->other2;
myObj* var = new myObj;
var = other1;
不需要它了何時刪除C /解引用++
delete var;
var = new myObj;
var = other2;
爲什麼不能只是代替取消引用刪除並重新分配?
var->other2;
你的問題很愚蠢,絕對沒有意圖。換句話說,你在這裏有一個潛在的困惑,這不能通過簡單的回答來解決。
我強烈建議您閱讀C或C++的入門教材。網絡充滿了優秀的講座和免費的電子書。你不會後悔的!
谷歌周圍:)也許,你會回來在幾天內回答你自己的問題。
快樂編碼!
取消引用,並不意味着刪除:http://en.wikipedia.org/wiki/Dereference
我建議你去通過關於C++的一些教程,你似乎有什麼很多的詞彙,其實就是一種誤解。
請記住使用谷歌。
其他人對你對術語的困惑發表了評論。我會評論你的代碼。
當你這樣做:
myObj* var = new myObj;
var = other1;
你創建一個memory leak。 new myObj
爲結構分配內存,並將var
設置爲指向那裏。當您重新分配var
時,您不再有指向分配結構的變量。 C++沒有自動垃圾收集功能,所以這個內存不再可用,但是你也沒有一個變量,你可以使用這個變量來與delete
一起回收它。
var = other1
重新指定指針,它確實不是複製內容;如果要複製的結構,你必須寫:
*var = *other1;
當你然後做:
delete var;
你不刪除原有的結構,你刪除任何other
指出。這僅在使用new
創建該結構時纔有效。
你肯定需要回頭查看C++中指針的所有指令材料。
*爲什麼不能只是取消引用而不是刪除和重新分配?*我一直在閱讀,試圖理解它,但是什麼? – thang
@thang將指針的值設置爲其他值。 – onepiece
http://en.wiktionary.org/wiki/dereference *可以訪問指針所指向的內容。*?這就是你要使用的解除引用? – thang