指针是否释放判断_面试官让我手撕智能指针 shared_ptr
时间: 2023-11-09 07:42:07 浏览: 108
C++智能指针shared_ptr分析
5星 · 资源好评率100%
智能指针 `shared_ptr` 的最大作用就是解决动态内存分配后的内存泄漏问题,它可以自动释放指针所指向的内存空间,避免了手动管理内存的麻烦和容易出现的错误。在使用 `shared_ptr` 时,需要注意以下几点:
1. 在使用 `shared_ptr` 前必须先进行初始化,否则会出现未定义行为。
2. `shared_ptr` 的引用计数器会在每个 `shared_ptr` 实例中保存,引用计数器初始值为 1。每个新的 `shared_ptr` 实例与原有的 `shared_ptr` 实例共享同一个引用计数器,当引用计数器为 0 时,释放被管理的内存空间。
3. 在多个 `shared_ptr` 实例中,不要出现循环引用的情况,即 `shared_ptr` 对象之间出现相互引用,否则会导致内存泄漏。
4. 如果需要将 `shared_ptr` 对象作为参数传递给函数,可以使用 `std::move()` 函数将其转移,避免引用计数器的增加和减少。
在判断智能指针的释放时,可以使用 `use_count()` 函数来获取当前智能指针的引用计数器值,如果引用计数器值为 1,则表示当前智能指针是唯一指向被管理内存的指针,可以使用 `unique()` 函数来判断是否为唯一指针。如果需要手动释放指针所指向的内存空间,可以使用 `reset()` 函数将智能指针重置为空指针。
阅读全文