24 lines
1.3 KiB
C++
24 lines
1.3 KiB
C++
#include "smart_ptr.h"
|
|
|
|
// 基本
|
|
void base()
|
|
{
|
|
// 1. shared_ptr 智能指针用于智能管理内存管理动态分配的内存,可以确保在不再需要使用某段内存时进行自动释放,避免内存泄漏。
|
|
// 通过跟踪引用计数或者其他机制,智能指针可以在不再有任何引用指向分配的内存时释放它。
|
|
|
|
// 2. weak_ptr 用于解决 shared_ptr 的循环引用的问题。
|
|
// (1) weak_ptr 只能从 shared_ptr 对象构建。
|
|
// (2) weak_ptr 并不影响动态对象的生命周期,即其存在与否并不影响对象的引用计数器。当 weak_ptr 所指向的对象因为 shared_ptr 计数器为 0 而被释放后,
|
|
// 那么 weak_ptr 的 lock 方法将返回空。
|
|
// (3) weak_ptr 并没有重载 operator-> 和 operator * 操作符,因此不可直接通过 weak_ptr 使用对象。
|
|
// (4) 提供了 expired() 与 lock() 成员函数,前者用于判断 weak_ptr 指向的对象是否已被销毁,后者返回其所指对象的 shared_ptr 智能指针(对象销毁时返回”空“ shared_ptr ),
|
|
// 如果返回 shared_ptr,那么计数器会加1.
|
|
}
|
|
|
|
// 测试用例
|
|
void test_example()
|
|
{
|
|
MSmartPointer<CHouse> p1(new CHouse());
|
|
MSmartPointer<CHouse> p2;
|
|
p2 = p1;
|
|
} |