对于一个小项目,我想在其中使用带有stl容器的结构。 然后这个东西就变成了动态的2 dim。数组,但当我尝试删除它时, 它是段错误。
以下是代码:
struct cell{
list<pair<double, double> > alist;
};
int main()
{
struct cell ** myAr = new cell*[5];
for(int i = 0; i < 5; ++i)
myAr[i] = new cell[5];
for(int j = 0; j < 5; ++j)
delete myAr[j];
delete myAr;
return 0;
}
任何人都可以帮我吗? 提前致谢。 FLO。
答案 0 :(得分:6)
对delete[]
分配的内存使用new[]
:
for(int j = 0; j < 5; ++j)
delete[] myAr[j];
delete[] myAr;
答案 1 :(得分:2)
您使用new []分配,因此您需要使用delete []:
免费for(int j = 0; j < 5; ++j)
delete [] myAr[j];
delete [] myAr;
答案 2 :(得分:1)
int main()
{
struct cell ** myAr = new cell*[5];
for(int i = 0; i < 5; ++i)
myAr[i] = new cell[5];
for(int j = 0; j < 5; ++j)
{
delete[] myAr[j];
myAr[j] = 0;
}
delete[] myAr;
myAr = 0;
return 0;
}
答案 3 :(得分:1)
我认为delete [] myAr;
应该可以正常工作