“深度探索c++对象模型”第六章

全局变量在编译时初始化为0,其构造函数在程序启动后执行。new操作符包括malloc的功能并处理异常,对于申请0或负大小的内存有特定处理。delete用于释放new分配的内存,且与析构函数不同,析构函数不涉及内存释放。例如,`Class*a=newMemBlock()Class();`创建对象后,应使用析构函数而不是`deletea;`来清理资源。
摘要由CSDN通过智能技术生成
  1. 全局变量(类对象)在编译期间为0,只有在程序启动后才被调用构造函数。

  1. new && malloc,delete&&free:

  • new内部调用malloc,delete内部调用free

  • new比malloc多异常处理,delete&&free也一样

  • 申请大小为0的内存不会出错,而是返回一个1byte的内存

  • 申请大小为负数也不出错,可能和处理0的方式类似?

  1. delete和析构函数:

  • Class* a = new(MemBlock)Class();

  • a->~Class(); //这里不能写“delete a;”,因为会释放内存。

  • a = new(MemBlock)Class();

  1. 临时对象看的有点昏。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值