我目前有涉及到一個問題:C++ vector - push_back(* new obj())和push_back(obj())有什麼區別?
vector<myObj> myVector;
Q1。請告訴我它們的區別如下兩行之間:
a) myVector.push_back(*new myObj());
b) myVector.push_back(myObj());
注:我知道,行a)是不好的做法,因爲它是通過動態分配MyObj中的內容,將其複製到載體中,因此之前導致內存泄漏不能被釋放...
但是,我在假設這兩行應該導致包含完全相同內容的向量,雖然看起來這種假設是不正確的。我正在開發RUNS的軟件,使用a)(我知道,這是造成漏洞,請儘量忽略這一點),但在b)行中出現各種不同的exc_bad_access錯誤。 Q2302。任何人都可以解釋爲什麼這可能是?
編輯:當發佈此我本來認爲我的問題,必須與在產生的向量內容差一些,但我的問題是實際上與落實「三法則」 http://en.wikipedia.org/wiki/Rule_of_three_(C%2B%2B_programming) 謝謝@WhozCraig,@ juanchopanza & @Alex Antonov爲您提供幫助!
'*新MyObj中()'我爲大家介紹內存泄漏操作。 – Borgleader
請顯示'myObj'的定義。 –
如果不崩潰(一),但與(b)中,在某個地方'myObj'你可能不會實現[三規則(http://en.wikipedia.org/wiki/Rule_of_three_做(C%2B%2B_programming))。我差點賭上它。 – WhozCraig