社区
模式及实现
帖子详情
请问单例模式最后怎样释放内存?
lhbgyl
2005-12-06 09:45:16
我在程序中使用了单例模式,我怕内存泄漏,就在主程序中Instance一个单例类的对象,然后在程序退出的时候delete它,但是经常出现NULL Pointer Assignment 错误,如果把这两行语句删除,就不会有错误,但是在程序的其他地方只有对这个单例类对象Instance操作,没有delete操作,请教各位高手,这样是不是导致内存泄漏?如何来处理才是正确的。
...全文
777
12
打赏
收藏
请问单例模式最后怎样释放内存?
我在程序中使用了单例模式,我怕内存泄漏,就在主程序中Instance一个单例类的对象,然后在程序退出的时候delete它,但是经常出现NULL Pointer Assignment 错误,如果把这两行语句删除,就不会有错误,但是在程序的其他地方只有对这个单例类对象Instance操作,没有delete操作,请教各位高手,这样是不是导致内存泄漏?如何来处理才是正确的。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sinall
2005-12-07
打赏
举报
回复
用boost的shared_ptr来管理吧。
或者stl的auto_ptr来管理。
csucdl
2005-12-06
打赏
举报
回复
楼上的怎讲
lhbgyl
2005-12-06
打赏
举报
回复
我是在dos下用borlandc++3.1做的,不知道如何看内存是否泄漏。
lhbgyl
2005-12-06
打赏
举报
回复
对,我的写法与《设计模式-可服用面向对象基础》的写法相同,和你的写法不同,没有写delete函数,我说的delete是与new对应的那个delete
快乐鹦鹉
2005-12-06
打赏
举报
回复
就在主程序中Instance一个单例类的对象
==
首先,你的单实例对象是什么类型的?Instance操作都做了什么?
其次,是否有泄漏,你可以在调试状态下看有没有泄漏报告。
另外,对于生命期与主线程相同的对象,从结果上看,delete并非必要,因为即使因为没有delete而泄漏,也不要紧,因为程序退出,系统会回收所有资源,包括没有delete的。
内存泄漏最大的威胁是在运行过程中产生的泄漏,如在循环等过程中反复申请资源,如果不及时释放,将会内存耗尽。
lhbgyl
2005-12-06
打赏
举报
回复
为什么会自己释放了?是不是析构函数做的,在堆中创建的对象,它的析构函数也会自己调用吗?
fiftymetre
2005-12-06
打赏
举报
回复
你的Instance和Delete函数是怎么写的?是这样吗?
Singleton *Instance()
{
if (NULL == m_pInstance)
{
m_pInstance = new Singleton();
}
return m_pInstance;
}
void Delete()
{
if (NULL != m_pInstance)
{
delete m_pInstance;
m_pInstance = NULL;
}
}
最好把你的代码贴出来看看
junguo
2005-12-06
打赏
举报
回复
程序退出后,自然就不从在内存泄露了!但你在释放Instance的时候,应该先对Instance进行一下判断,看它是否为空,在做释放.
xingtian713
2005-12-06
打赏
举报
回复
Singleton模式下的实例,从实用角度上来说,是允许有一定的泄漏的,因为他的释放时机就是整个程序退出时机。
csucdl
2005-12-06
打赏
举报
回复
估计楼主在其他地方改变了返回的单件对象指针的值
你可以单步调试跟踪一下
单件模式存在着thread unsafe 具体解决方法这里有讨论
http://dev.csdn.net/develop/article/65/65642.shtm
fixopen
2005-12-06
打赏
举报
回复
如果你的对象确实是Singleton,那么你就不需要担心释放问题。
hjunxu
2005-12-06
打赏
举报
回复
但构建也有不同的实现方法的,你如果放在堆里(一般用new分配的),就需要delete.
java
单例模式
实例
一个简单的java工程,包含注释,一目了然,其中包含了
单例模式
的所有实现方式,懒汉式,饿汉式,双重校验,枚举,静态内部类等方式实现单例。
Java设计模式-
单例模式
详解
Java设计模式-
单例模式
详解
Unity游戏开发中常用的三种
单例模式
基类框架
Unity游戏开发中常用的三种
单例模式
基类框架,包含三个文件,分别是不继承mono的,继承mono但需要手动挂载的,继承mono可自动挂载的,前两种的使用会更加广泛
java
单例模式
(懒汉式与饿汉式)
主要介绍了java
单例模式
的相关资料,这里对懒汉式与饿汉式都做了实例介绍,需要的朋友可以参考下
IOS应用源码之
单例模式
.rar
IOS应用源码之
单例模式
.rar
模式及实现
5,530
社区成员
4,167
社区内容
发帖
与我相关
我的任务
模式及实现
C/C++ 模式及实现
复制链接
扫一扫
分享
社区描述
C/C++ 模式及实现
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章