带有列表的结构<..> 2 暗淡。动态数组删除时出现段错误

发布于 2024-09-08 19:23:36 字数 423 浏览 1 评论 0 原文

对于一个小项目,我想使用一个带有 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;
}

任何人都可以帮我解决这个问题吗? 提前致谢。 弗洛。

for a little project i wanted to use a struct with an stl container in it.
This thingy is then packet into a dynamic 2 dim. array, but when i try to delete it,
it segfaults.

Here is the code:

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;
}

Can anyone help me with this?
Thanks in advance.
Flo.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

眼中杀气 2024-09-15 19:23:36

使用 delete[] 来分配通过 new[] 分配的内存:

for(int j = 0; j < 5; ++j)
    delete[] myAr[j];
delete[] myAr;  

Use delete[] for memory allocated with new[]:

for(int j = 0; j < 5; ++j)
    delete[] myAr[j];
delete[] myAr;  
野侃 2024-09-15 19:23:36

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

for(int j = 0; j < 5; ++j)
      delete [] myAr[j];
   delete [] myAr; 

You allocated with new[] so you need to free with delete[]:

for(int j = 0; j < 5; ++j)
      delete [] myAr[j];
   delete [] myAr; 
旧时浪漫 2024-09-15 19:23:36
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;
}
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;
}
高跟鞋的旋律 2024-09-15 19:23:36

我认为 delete [] myAr; 应该可以正常工作

i think delete [] myAr; should work fine

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文