| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5172 人关注过本帖
标题:myajax95斑竹,我要求你把那个帖子解开
只看楼主 加入收藏
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-07-24 22:18
热情依然
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:715
专家分:0
注 册:2005-4-5
收藏
得分:0 
哦,我跟穆兄解释的是 operator new,kai 兄给我看的是 new operaotr,new operator才是穆兄正真要的答案

c++/C + 汇编 = 天下无敌
2006-07-24 22:18
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 
sorry, type error, it should be int (* p)[5]; or int *p[5];

自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2006-07-24 22:20
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-07-24 22:22
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 
[QUOTE]我认为这个观点是错误的
因为编译器不等于c标准
比如 ++x+++x+++x 表达式
你不可能从汇编中得到正确的结论[/QUOTE]

you are right. That is an very large misunderstand from assembler. With Assembler you will learn how to write code efficient, but assembler will not tell you whether the date tpye is correct.

自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2006-07-24 22:26
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-07-24 22:30
热情依然
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:715
专家分:0
注 册:2005-4-5
收藏
得分:0 
算,我跟你详细解释, C++的new操作符号有两种,一种是operator new,一种是new operator
不要以为是相同的东西, new operator 就是内建立类型, 当你 int *p = new int(0)的时候,就是调用new operator;
但是new operator内部,又调用 operator new 也就是 void * operator new(size_t)
operator new就是跟malloc一样,只复杂分配内存,不管类型和不合适,不理会构造函数,这些事情是 new operator的事情
也就是说 new operator 调用 了 operator new分配内存之后 再负责合适的类型转换

[此贴子已经被作者于2006-7-24 22:37:51编辑过]


c++/C + 汇编 = 天下无敌
2006-07-24 22:33
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-07-24 22:37
热情依然
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:715
专家分:0
注 册:2005-4-5
收藏
得分:0 
而 operator new 可以是自己定义的分配的动作,可以调用set_new_handle(),这个东西大概说一下,就是允许你分配内存出错之后,就调用你自己定义的处理出错的办法.括号里面的参数是指向函数的指针,是指向你自己定义处理出错的函数,set_new_handle的返回值是就的处理出错函数的指针,如果set_new_handle是第一次调用,那么就没有旧的处理出错函数,也就是缺省行为,返回NULL

c++/C + 汇编 = 天下无敌
2006-07-24 22:41
热情依然
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:715
专家分:0
注 册:2005-4-5
收藏
得分:0 
以下是引用穆扬在2006-7-24 22:37:38的发言:
我8楼问题中的是哪一种呢?
“但我不清楚new int[10]是什么样的指针,麻烦你能否告诉我一声"


这个是调用 operator new[](size_t) 这个如果你是调用全局的,不是自己在类里面定义的,那么缺省行为都是调用operator new,也就是返回一个指向 连续分配的10*sizeof(int)大小的内存的首地址

c++/C + 汇编 = 天下无敌
2006-07-24 22:44
快速回复:myajax95斑竹,我要求你把那个帖子解开
数据加载中...
 
   



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

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