《C++高级进阶教程》 第七章内存管理

目录

         7.1 C++内存程序管理

7.2 理解new操作的实现过程

7.3 怎样禁止在堆或者栈上创建对象

7.4 new 和 delete的使用规范

7.5 delete 和 delete[] 的区别

7.6 什么是定位放置new

7.7 在函数中创建动态对象

7.8 内存池技术


7.1 C++内存程序管理

 

具体解释见P262

7.2 理解new操作的实现过程

主要做了两件事:一是申请内存,而是调用对象的构造函数进行初始化。具体见P268

7.3 怎样禁止在堆或者栈上创建对象

禁止在堆上,其实也就是使new失效。也就可以把operator new()函数声明为对象的私有。

禁止在栈上,也就是把构造函数和析构函数声明为private;不过这样也会影响全局变量。不做讨论

7.4 new 和 delete的使用规范

1 - 必须成对使用;在delete前要先判断指针是否为空,delete之后要把指针赋值为nullptr

2 - 一般在类里面,是在构造函数中用new申请空间,然后再析构函数中使用delete;这样就保证了成对出现。这也是为什么在一个构造函数里面不能调用另一个构造函数的原因。

7.5 delete 和 delete[] 的区别

你要想想为什么编译器知道要释放多少内存?

其实在用new 和 new[] 申请的时候,会额外申请5个字节,专门用来告知编译器这些额外信息。所以delete 和 delete[]

 千万不要用错了,要么内存多释放,要么内存泄漏。

具体见P273

7.6 什么是定位放置new

就是在申请内存的时候指定具体的地址。具体用法:

7.7 在函数中创建动态对象

7.8 内存池技术

没看懂 mark

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值