首页 > 代码库 > 深度探索C++对象模型笔记(1)——new和delete运算符
深度探索C++对象模型笔记(1)——new和delete运算符
int *pi = new int(5);
new操作实际上由两步组成:
(1)通过适当的new运算符函数实体,配置所需的内存。
//调用函数库中的new运算符。
int *pi = new = __new( sizeof( int ) );
(2)给配置得来的对象设立初值。
*p = 5;
初始化应该在内存配置成功(经由new运算符)后才执行。
1 int *pi; 2 3 if( pi = __new( sizeof(int) ) ) 4 5 *pi = 5; //分两步
类似地;
delete pi; if( pi != 0) __delete( pi );
注意pi并不会自动被清0(NULL)。
所以后面如果有如下操作:
if( pi && *pi = 5 ) { //......... }
将是合法的(但无法预测后果的)。
delete会结束pi指向的对象的生命,所以后面不应该再去处理这部分内存。
当new操作的是一个类时:
Point3d *origin = new Point3d;
被转换为:
Point3d *origin; //伪码 if(origin = __new ( sizeof( Point3d ) ) ) origin = Point3d::Point3d( origin );
深度探索C++对象模型笔记(1)——new和delete运算符
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。