【发布时间】:2014-02-06 14:46:29
【问题描述】:
我想正确删除我的向量的所有元素。我需要按照您应该在下面看到的方式填充结构向量的向量,每次调用 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;
}
我想删除所有用 NEW 分配的新对象,但我不知道如何正确执行。
【问题讨论】:
-
将您的指针存储在:
std::unique_ptr,它将为您处理删除。 -
我不太明白你的代码,但我理解你的问题this 的方式可能对你有帮助(只需用 std::vector 替换 BinaryTree)。
-
你想做什么?
-
temp = new std::vector<node>;这一行看起来像是内存泄漏的好地方。确保在 i 循环结束时删除 temp。