我声明了矢量:可用内存
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++新手,所以我不太确定对象是否需要存储在堆中。所以只是一个后续问题:即使我使用超出范围的对象(通过将其存储在向量中),为什么它工作正常?它不会被其他东西覆盖在堆栈上吗? –