C++语言
Completion requirements
在实现函数时,你可能想要动态分配内存(使用 CRType* poRaw = new CRType;
),并打算在函数结束时释放这些内存(使用 delete poRaw;
)。但是,如果在函数执行过程中抛出未处理的异常,这样做会导致内存泄漏。
为了避免这种情况,你可以将局部变量的类型从原始指针改为局部对象变量(初始化为 CRSmart poSmart(new CRType);
)。无论是正常执行完函数还是由于异常,poSmart
离开作用域时,这个局部对象的析构函数都会被调用。因此,我们可以将释放内存的责任从手动编写的函数中转移到这个 CRSmart
智能指针类的析构函数中。
C++ 提供了几种内置的智能指针类,它们的工作原理类似于此。
Last modified: Tuesday, 28 January 2025, 12:50 AM