原理:对象的构造析构函数是自动调用的,如果将堆上内存释放放入某个栈上对象的析构函数,就可以实现 使用析构函数防止资源泄漏。典型代码是stl的auto_ptr。
template<class T>
class auto_ptr {
public:
auto_ptr(T *p = 0): ptr(p) {} // 保存ptr,指向对象
~auto_ptr() { delete ptr; } // 删除ptr指向的对象
private:
T *ptr; // raw ptr to object
};
本文介绍了一种通过在栈对象的析构函数中释放堆内存来避免资源泄漏的方法。这种方法利用了C++中对象生命周期的特点,确保即使在异常情况下也能正确释放资源。文章给出了一个具体的例子,即std::auto_ptr的实现。
原理:对象的构造析构函数是自动调用的,如果将堆上内存释放放入某个栈上对象的析构函数,就可以实现 使用析构函数防止资源泄漏。典型代码是stl的auto_ptr。
template<class T>
class auto_ptr {
public:
auto_ptr(T *p = 0): ptr(p) {} // 保存ptr,指向对象
~auto_ptr() { delete ptr; } // 删除ptr指向的对象
private:
T *ptr; // raw ptr to object
};
2725
187

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