总第33篇
本文主要介绍C++11/14在标准库中对智能指针和引用计数的扩充,以供大家学习和工作的过程中参考。
1.引用计数
引用计数是为了防止内存泄漏而产生的,其基本理念是:对于动态分配的对象进行引用计数,当增加一次对同一个对象的引用时,计数加1,当删除一次引用时,计数减1,当一个对象的引用计数减为0时,就自动删除指向的堆内存。
在传统C++中,总是手动的释放资源,用new和delete去实现。而在C++11中,引入智能指针和引用计数,让程序开发者不再关心手动释放内存。 这些智能指针包括:std::shared_ptr、std::unique_ptr、std::weak_ptr,使用它们需要包含头文件<memory>。
注意,引用计数并不是垃圾回收,引用技术能尽快回收不再被使用的对象,同时在回收的过程中也不会造成长时间的等待,更能够清晰明确地表明资源的生命周期。
2.std::shared_ptr
std::shared_ptr是一种智能指针,可以记录有多少个shared_ptr共同指向一个对象,从而消除显式的调用delete,当引用计数变为0时,就会将对象自动删除。
但是,使用std::shared_ptr依然需要使用new
本文介绍了C++11/14标准库中的智能指针,如`std::shared_ptr`, `std::unique_ptr`和`std::weak_ptr`,以及它们如何通过引用计数自动管理内存,防止内存泄漏。`std::shared_ptr`用于共享所有权,`std::unique_ptr`确保独占所有权,而`std::weak_ptr`则解决循环引用问题。"
130161299,17771540,Java进程与线程详解,"['Java', 'JVM', '开发语言', '多线程', '并发编程']
订阅专栏 解锁全文
1985

被折叠的 条评论
为什么被折叠?



