gpt4 book ai didi

c++ - 从对象 vector 中释放内存(不是指向对象的指针)

转载 作者:行者123 更新时间:2023-11-30 02:29:08 24 4
gpt4 key购买 nike

我声明了 vector :

vector<Object> my_vect;

我把一些东西放进去

my_vect.push_back(*(new Object()));

我知道如果我声明一个指针 vector 会很简单,但这对我的代码至关重要。

我试过用

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:”错误。

谢谢,

最佳答案

您应该按如下方式添加对象

vector<Object> my_vect;

my_vect.emplace_back();

my_vect.push_back(Object());

我不建议获取指向 vector 中对象的指针,因为任何导致 vector 重新分配的指针都将失效,因为基础数组将被复制到别处。

关于c++ - 从对象 vector 中释放内存(不是指向对象的指针),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39923751/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com