#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 p1(new CHouse()); MSmartPointer p2; p2 = p1; }