C++内存泄露
2016-03-16 18:13
417 查看
1. boost::any 保存原始指针
boost基础——anyint* p = new int(10); // 应该用 shared_ptr<int> p(new int(10)); boost::any a = p; // 危险,会造成内存泄露
any 的析构函数会删除内部的 holder 对象(any 是包装类),如果类型是指针,any 并不会对指针执行 delete 操作,因此,如果用 any 保存原始指针(raw pointer)会造成内存泄露,替代方案是使用智能指针来存入 any 容器。
2. 单例类
class Singleton { public: static Singleton* instance() { if (!_instance) _instance = new Singleton; // 危险,会造成内存泄露,应使用智能指针对原始指针封装 return _instance; } private: Singleton() {} static Singleton* _instance; };
解决方案见:utilities(C++)——单例(Singleton) (使用智能指针 shared_ptr)
相关文章推荐
- 友元函数
- 单片机LED灯(1)
- C语言求1+2!+3!+...+20!
- 详谈C++游戏程序员发展前景
- c++实现顺序表
- C++之继承与派生(2)
- C++扬帆远航——6(三色球)
- C++设计模式编程中简单工厂与工厂方法模式的实例对比
- 给sublime3配置C++(编译,运行,和格式化代码)
- Java程序猿学习C++之字符串
- 替换字符串 c++
- C++扬帆远航——5(换分币)
- 【C++探索之旅】第一部分第十三课:第一部分小测验
- 【C++探索之旅】第一部分第十三课:第一部分小测验
- iOSDay09C语言函数指针
- 【C++探索之旅】第一部分第十二课:指针一出,谁与争锋
- 【C++探索之旅】第一部分第十二课:指针一出,谁与争锋
- C语言求一组分数数列之和
- 含所有运算符重载的讲解(附实例)
- C语言第零篇:C语言学习