структура со списком <..> в 2 тусклых.ошибки динамического массива при удалении - PullRequest
1 голос
/ 08 июля 2010

для небольшого проекта я хотел использовать структуру с контейнером stl. Эта штука затем упаковывается в динамический 2 дим. массив, но когда я пытаюсь удалить его, это segfaults.

Вот код:

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 ]

6 голосов
/ 08 июля 2010

Используйте delete[] для памяти, выделенной с new[]:

for(int j = 0; j < 5; ++j)
    delete[] myAr[j];
delete[] myAr;  
2 голосов
/ 08 июля 2010

Вы наделены новым [], поэтому вам нужно удалить с помощью delete []:

for(int j = 0; j < 5; ++j)
      delete [] myAr[j];
   delete [] myAr; 
1 голос
/ 08 июля 2010

я думаю delete [] myAr; должно работать нормально

1 голос
/ 08 июля 2010
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;
}
...