我聲明瞭矢量:可用內存
vector<Object> my_vect;
,我推一些對象到它像
my_vect.push_back(*(new Object()));
我知道這將是簡單如果我要聲明一個指針向量,但這對我的代碼至關重要。
我嘗試使用
my_vect.clear()
,但無濟於事。
此外,我也嘗試過讓指針的對象,如:
vector<*Object> new_my_vect;
for(int i = 0; i < my_vect.size(); i++)
{
new_my_vect.push_back(&my_vect[i]);
}
for(int i = 0; i < new_my_vect.size(); i++)
{
delete new_my_vect[i];
}
但我得到一個「free(): invalid pointer:
」的錯誤。
感謝信,
爲什麼你認爲你需要'new'在這裏創建的對象:'my_vect。 push_back(*(new Object()));'實際上? –
我剛剛使用my_vect.push_back(Object())。我是C++新手,所以我不太確定對象是否需要存儲在堆中。所以只是一個後續問題:即使我使用超出範圍的對象(通過將其存儲在向量中),爲什麼它工作正常?它不會被其他東西覆蓋在堆棧上嗎? –