社区
模式及实现
帖子详情
请问单例模式最后怎样释放内存?
lhbgyl
2005-12-06 09:45:16
我在程序中使用了单例模式,我怕内存泄漏,就在主程序中Instance一个单例类的对象,然后在程序退出的时候delete它,但是经常出现NULL Pointer Assignment 错误,如果把这两行语句删除,就不会有错误,但是在程序的其他地方只有对这个单例类对象Instance操作,没有delete操作,请教各位高手,这样是不是导致内存泄漏?如何来处理才是正确的。
...全文
762
12
打赏
收藏
请问单例模式最后怎样释放内存?
我在程序中使用了单例模式,我怕内存泄漏,就在主程序中Instance一个单例类的对象,然后在程序退出的时候delete它,但是经常出现NULL Pointer Assignment 错误,如果把这两行语句删除,就不会有错误,但是在程序的其他地方只有对这个单例类对象Instance操作,没有delete操作,请教各位高手,这样是不是导致内存泄漏?如何来处理才是正确的。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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反射机制的原理,作用;掌握反射机制的应用;
单例模式
程序的编写步骤与注意问题
C++的
单例模式
怎么
释放
内存
?
经过new出一个对象来实现的单例,不论单例是经过饿汉方式,仍是懒汉方式来实现,都面临一个问题,即new出来的对象由谁
释放
,什么时候
释放
,怎么
释放
?
论
单例模式
内存
释放
论
单例模式
内存
释放
Jay_Guo关注 2017.11.26 21:37*字数 710阅读 648评论 0喜欢 1 对于C++ 项目开发者来说,
单例模式
可以说是最常用的也是最有效的一种设计模式,无论是单线程中的懒汉模式还是线程安全的恶汉...
Java设计模式之
单例模式
详解
在程序中多次使用同一个对象且作用相同时,为了防止频繁地创建对象使得
内存
飙升,
单例模式
可以让程序仅在
内存
中创建一个对象,让所有需要调用的地方都共享这一单例对象。 2.
单例模式
的要素 1、单例类只能有一个...
单例模式
引起的
内存
泄漏
今天主要说明
单例模式
一种情况下引起的
内存
泄漏,这类问题引起的
内存
泄漏,也可以归纳为:长生命周期对象持有短生命周期对象,导致短生命周期对象不能回收。 首先介绍一下,
内存
泄漏和
内存
溢出的区别,
内存
泄漏和...
模式及实现
5,530
社区成员
4,169
社区内容
发帖
与我相关
我的任务
模式及实现
C/C++ 模式及实现
复制链接
扫一扫
分享
社区描述
C/C++ 模式及实现
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章