- 为了更容易(同时也更安全)地使用动态内存,新的标准库提供了两种智能指针(smart pointer)类型来管理动态对象。智能指针的行为类似常规指针,重要的区别是它负责自动释放所指向的对象。新标准库提供的这两种智能指针的区别在于管理底层指针的方式:shared_ptr允许多个指针指向同一个对象;unique_ptr则“独占”所指向的对象。标准库还定义了一个名为weak_ptr的伴随类,它是一种弱引用,指向shared_ptr所管理的对象。这三种类型都定义在memory头文件中。
- make_shared函数最安全的分配和使用动态内存的方法是调用一个名为make_shared的标准库函数。此函数在动态内存中分配一个对象并初始化它,返回指向此对象的shared_ptr。与智能指针一样,make_shared也定义在头文件memory中
- shared_ptr的拷贝和赋值当进行拷贝或赋值操作时,每个shared_ptr都会记录有多少个其他shared_ptr指向相同的对象,多一个引用就+1,离开作用域就-1.等于0的时候释放内存。
- **使用动态内存的常见原因:**1.是允许多个对象共享相同的状态。2.不知道多大3.不知道什么类型
- 使用new动态分配和初始化对象在自由空间分配的内存是无名的,因此new无法为其分配的对象命名,而是返回一个指向该对象的指针:与new类型类似,delete表达式也执行两个动作:销毁给定的指针指向的对象;释放对应的内存。
c++11:动态内存与智能指针
最新推荐文章于 2022-09-25 10:58:28 发布