本文主要是介绍动态内存与智能指针总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
#1 静态内存和栈内存中的对象由编译器自动创建和销毁。
#2 除了静态内存和栈内存,每个程序还有一块内存池,用于存储动态内存。
#3 C++11标准库提供两种智能指针,shared_ptr和unique_ptr 。
#4 shared_ptr允许多个指针指向同一个对象。unique_ptr则独占所指的对象。
#5 智能指针跟vector类似,也是模板,用法跟普通指针类似,解引用返回它指向的对象。
#6 通常用make_shared函数给shared_ptr分配内存。
#7 shared_ptr通过析构函数完成销毁工作。
#8 智能指针是一个类,每个定义的智能指针都是一个对象,这样就是把动态内存交给一个类对象去管理,从而实现自动调用析构函数释放内存。
#9 无论是程序正常退出还是发生了异常,局部对象都会调用析构函数自动销毁。局部智能指针也是个对象,所以会自动销毁,自动释放内存。
#10 如果不初始化智能指针,就会被初始化成空指针,可以用new返回的指针来初始化智能指针。
#11 对于一个接受原始指针的函数(或代码块),切记不可再将传入的原始指针包装为智能指针。
对于一个接受智能指针的函数(或代码块),切记不要直接将原始指针就地包装传入,而应该一开始就使用智能指针而非原始指针管理对象。
这篇关于动态内存与智能指针总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!