struct with list< ..> 2昏暗。删除时的动态数组段错误

时间:2010-07-08 12:23:33

标签: c++ stl struct segmentation-fault

对于一个小项目,我想在其中使用带有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。

4 个答案:

答案 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;应该可以正常工作