| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 961 人关注过本帖
标题:就没人知道int (*t)[10]=new int [n][10];这样分配了后怎么释放?
只看楼主 加入收藏
罗庇鹏ksq
Rank: 5Rank: 5
来 自:太平洋
等 级:职业侠客
帖 子:220
专家分:310
注 册:2012-6-30
收藏
得分:0 
二楼正解。还是同城的厉害啊。

分全给你吧,散了就有点…

大家谅解下。

二楼留个Q

谨记

从来都是无所谓,现在也该学着有所谓。✿咱们一个人,别坐井观天❀
2013-04-12 18:33
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
程序代码:
#include <iostream>
using namespace std;

class X {
public:
    X() : id(count++) {}
    ~X() { cout << "Destroying: X(" << id << ")" << endl; }
private:
    static int count;
    const int id;
};

int X::count;

int main()
{
    X (*a)[10] = new X[2][10];
    delete []a;
    return 0;
}
/* 输出:
Destroying: X(19)
Destroying: X(18)
Destroying: X(17)
Destroying: X(16)
Destroying: X(15)
Destroying: X(14)
Destroying: X(13)
Destroying: X(12)
Destroying: X(11)
Destroying: X(10)
Destroying: X(9)
Destroying: X(8)
Destroying: X(7)
Destroying: X(6)
Destroying: X(5)
Destroying: X(4)
Destroying: X(3)
Destroying: X(2)
Destroying: X(1)
Destroying: X(0)
*/

释放用new[]分配的数组时就要用delete[],new分配的单个对象时对应delete,如果对new[]分配的数组调用delete来释放则可能导致只有数组第一个元素被释放,可以通过析构函数的输出查看。

但是如果对于上面的a调用delete,输出也是一样的(VC和MinGW),也说明所有的对象都被删除了?但是如果a是一维的数组,则调用delete只会产生一个析构函数被调用,而其它对象未被释放。可能当用delete或delete[]释放一个多维数组(2维以上)的时候,效果一样?但是释放一个数组时还是得用delete[],尽管有些时候它的效果和delete一样。

My life is brilliant
2013-04-12 18:38
fanpengpeng
Rank: 8Rank: 8
来 自:南极洲
等 级:蝙蝠侠
威 望:7
帖 子:299
专家分:849
注 册:2013-2-1
收藏
得分:0 
回复 11楼 罗庇鹏ksq
你确定 delete [n] p; 这样的式子能通过编译? 你用哪款编译器? 推荐一下

人生是一场错过 愿你别蹉跎
2013-04-12 20:44
小贝01
Rank: 1
等 级:新手上路
帖 子:34
专家分:7
注 册:2013-4-1
收藏
得分:0 
学习
2013-04-12 21:04
子楠
Rank: 3Rank: 3
来 自:武汉
等 级:论坛游侠
帖 子:111
专家分:164
注 册:2013-4-9
收藏
得分:0 
不懂呀
2013-04-12 21:06
罗庇鹏ksq
Rank: 5Rank: 5
来 自:太平洋
等 级:职业侠客
帖 子:220
专家分:310
注 册:2012-6-30
收藏
得分:0 
回复 12楼 lz1091914999
额,就是  VC++6.0的一个完整版吧 ,,,反正确实是对了的。

从来都是无所谓,现在也该学着有所谓。✿咱们一个人,别坐井观天❀
2013-04-12 21:09
fanpengpeng
Rank: 8Rank: 8
来 自:南极洲
等 级:蝙蝠侠
威 望:7
帖 子:299
专家分:849
注 册:2013-2-1
收藏
得分:0 
回复 16楼 罗庇鹏ksq
好强 改天来试试 mingW好像不行

人生是一场错过 愿你别蹉跎
2013-04-12 21:12
罗庇鹏ksq
Rank: 5Rank: 5
来 自:太平洋
等 级:职业侠客
帖 子:220
专家分:310
注 册:2012-6-30
收藏
得分:0 
回复 12楼 lz1091914999
我 …… 无语…… delete [n]t 好像是不行
谢谢提醒
刚才好忙就盲目地结了帖子就去做事了

咳,再开一帖我们讨论下。。

从来都是无所谓,现在也该学着有所谓。✿咱们一个人,别坐井观天❀
2013-04-12 21:15
快速回复:就没人知道int (*t)[10]=new int [n][10];这样分配了后怎么释放?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.038906 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved