场景:
1. 使用auto_ptr 的方式可以wrap类对象, 之后在方法结束后可以自动释放对象, 参考;这样在有条件判断的语句时可以省掉free语句或CloseHandle.
http://blog.youkuaiyun.com/infoworld/article/details/9008911
2.C++的特性之一就是类对象(非返回值的对象)在方法结束后会自动调用析构函数,这样在析构函数里可以放一些释放资源的操作.
3. 这里实现了一个类似auto_ptr的类的实用Wrap类,可以参考根据自己需要自定义特定的Wrap类.auto_ptr的坏处之一就是只支持new出来的对象,
之二是不能删除数组. delete []
4. 恰当使用WrapObject能有效的减少内存泄漏,因为在很多C编程里, 太多的if语句在return前需要释放对象,很容易就会出错或多次释放。
文件 wrap_object.h
#ifndef __WRAP_OBJECT
#define __WRAP_OBJECT
#include <stdlib.h>
#include <Windows.h>
template<BOOL (WINAPI* WrapHandleFunc)(void*)
本文介绍了如何使用C++中的智能指针(如auto_ptr)和自定义的Wrap类来管理通过malloc分配的内存,以避免内存泄漏。在方法结束时,智能指针和自定义类的析构函数会自动释放对象,特别是在有复杂条件判断的语句中,可以简化资源释放的逻辑。此外,讨论了auto_ptr的一些限制,如不支持delete []操作,并提倡使用自定义的Wrap类进行更灵活的对象管理。
订阅专栏 解锁全文
825

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



