如何删除向量的指针
How to delete pointers of vector
我想正确删除向量的所有元素。我需要以下面的方式填充结构向量的向量,每次创建struct的新向量调用new
方法。
这是我的代码:
struct node
{
int index;
double value;
}
struct problem
{
int l;
struct node **x;
};
struct problem prob; // set by read_problem
std::vector<node *> vettProbX;
int main(){
node tmpValue;
std::vector <node> *temp;
for (int i=0; i<10; i++)
{
temp = new std::vector<node>;
for (int i=0; i<10; i++)
{
tmpValue.index=i;
tmpValue.value=i;
temp->push_back(tmpValue);
}
vettProbX.push_back(temp->data());
}
prob.x=&vettProbX[0];
//Destructor
for(int CC=0; CC<vettProbX.size(); CC++)
{
delete temp[CC];
}
return 0;
}
我想删除分配了新的新对象,但我不知道该如何正确执行。
您已分配给新的唯一对象是std::vector<node> *temp;
。您可以使用delete temp;
矢量自己的驱动器来处理其内容的破坏。但是,您必须在每次称为新的时做到这一点。在这种情况下,您可以在内部循环内分配,因此需要在循环末端调用删除。
但是,由于temp
仅在范围内使用,因此无需动态分配它。您可以在堆栈上分配它:std::vector<node> temp;
。然后,当它超出范围时,它将自动破坏(在这种情况下的功能末尾)。
在您的代码中,您将温度分配10次,但是您泄漏了前9个,因为您不在任何地方存储它们的指针(因此无法再删除它们)。您始终覆盖以前的温度的指针。在代码末尾,您尝试删除最后一个温度的内容(因为内容不是指针,而不是向量本身。
要实现您要做的事情,您需要做的就是将所有临时指针存储在std::vector<std::vector<node>* >
中,最终将每个向量删除内部。但是,如果您根本不使用任何指针,您的代码会更好。
另外,您有两个使用相同循环变量的嵌套循环。它可能无法按照您的意图工作。
我想正确删除我的向量的所有元素
由于您分配了内存的奇怪方式,因此无法释放所有内容。您会动态分配由temp
指向的向量,然后在循环的下一个迭代中覆盖指针。就是这样,一旦指针的记录消失了,您就无法释放它。
我需要填充结构向量的向量
在这种情况下,您应该首先创建一个vector<vector<node>>
。如果没有一个,则不能填充向量的向量,并且当前的代码没有一个。
如果您不保存指向新创建的向量的指针,则在此处创建:
temp = new std::vector<node>;
那么,没有办法删除并释放内存。
更改
std::vector<node *> vettProbX;
vettProbX.push_back(temp->data());
to
std::vector<std::vector<node> *> vettProbX;
vettProbX.push_back(temp);
然后,您可以删除vettProbX
中存储的每个项目
for (int i = 0; i < vettProbX.size(); i++)
delete vettProbX[i];
如果您需要访问这些内存段,而不是这样做
vettProbX[i]
您将必须调用data
方法
vettProbX[i]->data()
- 函数向量_指针有不同的原型,我可以构建一个吗
- 有没有一种"cleaner"的方法可以在指向基的指针向量中找到派生类的第一个实例?
- 使用向量类的c++指针
- 如何使用C++初始化向量;脚本化值不是数组、指针或矢量错误
- 如何更改唯一指针向量的可见性
- C++ 独特指针练习的向量
- C 中的向量指针的清晰图
- 当向量位于内部类中时,如何删除指向对象的向量指针
- std::向量指针
- 指向结构体的向量指针错误
- 删除指向指针的向量指针时出错
- 映射不同类型的向量指针
- 在c++中传递向量指针
- 虚拟类的向量:指针是干净的方法吗
- 如何从另一个向量/对象集构造新的向量/指针集
- 模型视图控制器- c++向量指针,太多的传递
- 为什么向量指针占用这么多内存?
- 删除条目向量指针的静态映射c++
- 复向量指针
- c++数组向量指针的初始化