设为首页
收藏本站
切换到宽版
登录
立即注册
找回密码
搜索
搜索
本版
帖子
用户
快捷导航
论坛
BBS
VIP用户组
官网群
无名商城论坛
»
论坛
›
资源分享区
›
学习资源专区
›
【冷漠搬砖】论单例模式内存释放
返回列表
发帖
查看:
264
|
回复:
0
[其他技术]
【冷漠搬砖】论单例模式内存释放
[复制链接]
无名
无名
当前离线
积分
32464
1万
主题
1万
帖子
3万
积分
管理员
积分
32464
发消息
发表于 2022-5-8 17:22:20
|
显示全部楼层
|
阅读模式
对于C++ 项目开发者来说,单例模式可以说是最常用的也是最有效的一种设计模式,无论是单线程中的懒汉模式还是线程安全的恶汉模式,亦或是其各个变种模式,都无法避免的是在使用完成后要对该单例占用的内存进行释放,本文旨在介绍几种单例模式内存释放方式。
在C++代码的编写过程中,指针的释放至关重要,用一句老生常谈的话就是“只要New,就要Delete”,做事总要有始有终嘛。在通常情况下,只要稍微留心,内存泄漏还是不那么容易泄漏的。比如,1)函数内的new,可在使用完后进行delete;2)类内的new,可在类析构时进行delete。但是对于大家通常使用单例内存,由于使用贯穿多个类,往往会被大家遗忘。下面谈论下单例模式内存的3中释放方式:
1 程序或组件关闭前释放
我想这种释放方式应该是大家最常用的单例内存释放方式了吧,至少对于没写多久代码的我来说是这样的。这种方式很简单就是直接在程序结束前或者组件关闭前直接delete调单例就好了,或者将delete自身放在一个destroy()中。该方法也最容易让人忘记释放单例内存。
2 使用智能指针
用智能指针来释放new出的内存是一种很省心的,内存释放方式,如OSG中的osg::ref_ptr<class T>(本人接触的第一种智能指针),UE4中的TSharePtr<class T>。当然,这种方式同样也使用于对单例指针的释放.。不过使用智能指针往往会导致的一个问题就是我们无法去主动控制内存的释放,也不知道它什么时候就被释放掉了。偶尔指针越界也挺让人郁闷的,不过对于初学者来说确实是一种不错的选择。
3 使用静态变量特性进行释放
静态变量,无论是全局的还是局部的都存储在全局数据区,会随着程序的退出而释放。而第三种方法也是利用静态变量的这一特性来释放单例内存,例子如下:
结果如下图所示:
以上便为本人提供的三种单例模式内存释放方式,希望对大家有所帮助。
侵删
释放
,
内存
,
指针
,
模式
,
方式
相关帖子
•
【教程】QQ小世界大学教育认证
•
【恶搞内存爆炸】iapp内存爆炸源码
•
【FUT】好看最新下载界面~
•
零基础学 PHP(网站基本概念)
•
【Max】戏人框架专属修改器没V内存我就教下怎么修改成V内存
•
【Max】利用Scene来设置虚拟内存
•
【LUR】各种网页挂马方式原理
回复
使用道具
举报
返回列表
发帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
快速回复
返回顶部
返回列表