是不是有多少个new就得多少个delete

looxi 2013-11-29 03:58:36
10 MtTracert** mt[MAX_THREADS];
...
103
104 mt[loop] = new MtTracert*[10];
105 for (int i = 0; i < 10; i++)
106 {
107 mt[i] = new MtTracert(2013,nanjing,i,true);
108 mt[i]->startThread();
109 }
110
111 for (int i = 0; i < 10; i++)
112 {
113 mt[i]->wait(true);
114 }
115 delete[] mt[loop];
116




2次new,第一次new了空间,第二次赋值,现在要释放 是采用115行的还是
delte mt[loop];
或者是
for (int i = 0; i < 10; i++)
{
delete mt[loop][i];
}

delete[] mt[loop];
感觉应该是第一种,直接释放空间数组,也就意味着数组中的元素被释放了,但是第一种在运行一段时间后会有段错误,求大神解释下这三种是什么情况?不胜感激!
...全文
1174 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
超级能量泡泡 2014-06-18
  • 打赏
  • 举报
回复
引用 5 楼 eziowayne 的回复:
[quote=引用 4 楼 daiweifeng 的回复:] 严重鄙视用多重指针的管理方式。
何解?[/quote] 既然用了C++就尽可能避免这种东西,应该使用类封装进行管理。而且多重指针的地址是离散的,性能也有问题。
eziowayne 2014-06-17
  • 打赏
  • 举报
回复
引用 4 楼 daiweifeng 的回复:
严重鄙视用多重指针的管理方式。
何解?
超级能量泡泡 2014-06-17
  • 打赏
  • 举报
回复
严重鄙视用多重指针的管理方式。
looxi 2013-12-02
  • 打赏
  • 举报
回复
引用 2 楼 YTerrenceLau 的回复:
运行了多少new,就要对应运行多少delete。 看运行期。 一般来说,二维必然需要for循环嵌套。
但是如果new2次,第一次只是申请空间的new[],第二次才是赋值的new(),这样的话,不是只需要delete空间么,赋值的那一次new在delete空间的时候不是也delete了?
YTerrenceLau 2013-11-29
  • 打赏
  • 举报
回复
运行了多少new,就要对应运行多少delete。 看运行期。 一般来说,二维必然需要for循环嵌套。
looxi 2013-11-29
  • 打赏
  • 举报
回复
up,来个大拿帮帮忙啊

1,025

社区成员

发帖
与我相关
我的任务
社区描述
Linux /Unix kernel支持不同的硬件体系,X86, ARM, MIPS, 等等
社区管理员
  • CPU和硬件区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧