C++ 具有列表的结构<&燃气轮机;在2米的地方。删除时的动态数组错误

C++ 具有列表的结构<&燃气轮机;在2米的地方。删除时的动态数组错误,c++,stl,struct,segmentation-fault,C++,Stl,Struct,Segmentation Fault,对于一个小项目,我想使用一个包含stl容器的结构。 这个东西然后被打包成一个动态的2维。数组,但当我尝试删除它时, 这是错误 代码如下: 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];

对于一个小项目,我想使用一个包含stl容器的结构。 这个东西然后被打包成一个动态的2维。数组,但当我尝试删除它时, 这是错误

代码如下:

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;
}
结构单元{ 清单主义者; }; int main() { 结构单元**myAr=新单元*[5]; 对于(int i=0;i<5;++i) myAr[i]=新细胞[5]; 对于(int j=0;j<5;++j) 删除myAr[j]; 删除myAr; 返回0; } 有人能帮我吗? 提前谢谢。
Flo.

使用
删除[]
分配给
新[]
的内存:

for(int j = 0; j < 5; ++j)
    delete[] myAr[j];
delete[] myAr;  
for(int j=0;j<5;++j)
删除[]迈亚尔[j];
删除[]迈亚尔;

使用
删除[]
分配给
新[]
的内存:

for(int j = 0; j < 5; ++j)
    delete[] myAr[j];
delete[] myAr;  
for(int j=0;j<5;++j)
删除[]迈亚尔[j];
删除[]迈亚尔;
int main()
{
结构单元**myAr=新单元*[5];
对于(int i=0;i<5;++i)
myAr[i]=新细胞[5];
对于(int j=0;j<5;++j)
{
删除[]迈亚尔[j];
myAr[j]=0;
}
删除[]迈亚尔;
myAr=0;
返回0;
}
int main()
{
结构单元**myAr=新单元*[5];
对于(int i=0;i<5;++i)
myAr[i]=新细胞[5];
对于(int j=0;j<5;++j)
{
删除[]迈亚尔[j];
myAr[j]=0;
}
删除[]迈亚尔;
myAr=0;
返回0;
}

我认为
删除[]myAr
应该可以正常工作

我认为
删除[]myAr应该可以正常工作

您分配了new[],因此您需要使用delete[]释放:

for(int j = 0; j < 5; ++j)
      delete [] myAr[j];
   delete [] myAr; 
for(int j=0;j<5;++j)
删除[]迈亚尔[j];
删除[]迈亚尔;

您分配了new[],因此需要使用delete[]释放:

for(int j = 0; j < 5; ++j)
      delete [] myAr[j];
   delete [] myAr; 
for(int j=0;j<5;++j)
删除[]迈亚尔[j];
删除[]迈亚尔;

删除[]迈亚尔[j]
;他们还被分配了
new[]
delete[]myAr[j]
;他们还被分配了
new[]