作爲我的previous question的續集,我想問下我的代碼在做錯了什麼。正確使用新的/刪除
的代碼,例如
void myclass1::myfun()
{
myclass2* newVar = new myclass2();
/* other code and stuff */
myvector.push_back(newVar); // myvector is a member of myclass1 and is a std::vector<myclass2*>
delete newVar;
}
但是當我運行它,myvector返回空,除非我註釋掉delete
線。
我在做什麼錯?
哦,對,我沒有注意到這一點。謝謝。如果我刪除了刪除線,那麼現在當矢量被刪除時會發生什麼?只有指針被刪除?謝謝 – Federico
@Federico:是的。只有指針被刪除,而不是指針。除非你將這些指針包裝成「智能指針」,爲你處理'delete'。 – ereOn
@ereOn:理解。問題是我無法將指針向量更改爲一個對象(要更改的代碼太多,太多太大的對象會在每個.push_back(如果要在每個.push_back中重新分配) ))。如何刪除矢量時刪除pointees?這些「智能指針」是什麼?他們是否正在建立或者我應該定義它們?再次感謝。 – Federico