堆、栈与内存管理
一、所谓stack,所谓heap
stack objects的生命期
static local objects的生命期
global objects的生命期
heap objects1的生命期
二、new:先分配memory,再调用ctor
三、delete:先调用dtor,再释放memory
四、动态分配所得的内存块,in VC
灰色部分为调试mode下的 debug header,紫色的部分为cookie,记录这块内存块的大小。由于内存块大小要为16的倍数,所以要自动填充4*3的大小。
动态分配所得的array
五、array new一定要搭配array delete
第一种写法是对的,这样加了[ ],编译器才知道要删除的是一个数组,第二种写法只会删除一个。但是两种写法都不会造成内存块删除不了,内存泄漏的是指针指向的的heap objects造成的内存泄漏。
六、把ctors放在private区
更好的单例模式的写法是:
这样写的话,如果没有任何人要使用这个单例的话,那么这个单例就不存在。一旦有人用了这个单例,这个单例才出现,且只有一份。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现