| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 782 人关注过本帖
标题:new type[][]的疑惑
只看楼主 加入收藏
lintaoyn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:606
专家分:2499
注 册:2009-4-8
结帖率:95.65%
收藏
已结贴  问题点数:0 回复次数:5 
new type[][]的疑惑
程序代码:
#include<iostream>
using namespace std;
class test
{
public:
    operator int()
    {
        return i;
    }
    test(int k = 1):i(k)
    {
        cout << "test" << ' ';
    }
    ~test()
    {
        cout << "~test" << ' ';
    }
    int i;
};
int main()
{
    test (*P)[5] = new test[4][5];
    delete []P;
    system("pause");
    return 0;
}
一句delete[]P就可以释放整个数组,求编译器是什么解释new[][].又是什么处理delete []P;
搜索更多相关主题的帖子: type new 
2010-10-24 09:01
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:20 
new [][] 里的第二维中的常数必须给出是为了在编译期生成其它语句时方便寻址而考虑的。
但是总的来看,它还是标记申请了一大块内存,总大小是多少。delete [] 只看那个总大小,放了就行了。

呵呵,根据现象给出的一种合理推测。不一定对啊~~
2010-10-24 17:32
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:0 
delete  p//只是告诉编译器 内存中有单一对象
delete []p//告诉编译器 内存中有“数组大小记录” 确认p是指向一个数组
2010-10-25 07:19
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:80 
new type[N] 只是开辟连续的空间大小 N 的内存 多维就有点中间事情要自己做 上面那种事自己已经定制啦第二维下标
上面的test (*P)[5] = new test[4][5];
可以理解成 typedef test Q[5];
Q  *p = new Q[4];//二维
还是可以继续:typedef test Q[4][5];
Q *p = new Q[3];//三维



2010-10-25 07:34
lintaoyn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:606
专家分:2499
注 册:2009-4-8
收藏
得分:0 
回复 4楼 寒风中的细雨
3Q

迭代的是人,递归的是神。
2010-10-25 10:43
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
new 不止这么点功能,用好了狠着呢~~
STL 库里还提供了调试用的函数,用着很方便。
2010-10-25 18:46
快速回复:new type[][]的疑惑
数据加载中...
 
   



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

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