C++系列
[Cpp基础] [08] 动态内存与智能指针
动态内存与智能指针 new+delete * new delete是C++中的两个主要的表达式. * new相当于C的malloc() + T(),delete相当于C的free() + ~T(). * operator new()以及operator delete()仅能用于覆盖内存分配操作,构造和析构的调用是无法被替换的. * delete能否正常执行依赖于指向的对象能否delete,而不依赖于指针自身(指针类型不含任何额外信息). * new T[n]中,n可以为0,返回的将是一个不能解引用的指针值,该指针值保证非nullptr,可以做正常的比较. * new和delete表达式总是会触发构造和析构,必要时可以使用malloc+placement new方案进行更精细的控制. * placement new仅仅用于在特定地址上触发构造函数, 后续需要手动调用析构函数来销毁对象. shared_ptr与unique_ptr * 智能指针都不是为数组型数据设计的,所以都没有重载[],+,-等运算符.