目录
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