在下面的代码中,当我添加带箭头的行时会出现错误:
如果不使用析构函数,代码可以正常工作。有什么想法吗?错误:在“./a.out”中双重释放或损坏(fasttop): 0x00000000007a7030 * 中止(核心已转储)
#include<iostream>
#include<vector>
struct Element
{
int *vtx;
~Element ()
{
delete [] vtx;
}
};
int main ()
{
Element *elm = new Element [2];
elm[0].vtx = new int [2]; // <----- adding this gives error
std::vector <Element> vec;
vec.push_back (elm[0]);
vec.push_back (elm[0]);
return 0;
}
vtx
改为std::vector<int>
并且去掉析构函数。即使是复制构造函数也无法帮助你。 - Ryan Haining