C++内存管理机制详解
C++的内存操作,真是又灵又狠。堆和栈的区别要是搞不清,出 bug 可不是闹着玩的。栈内存像临时笔记本,写完就撕;堆内存呢,就像你租的仓库,用完不还,迟早爆仓。
栈上的变量自动清理,挺省心的。可一旦你用上new
或malloc
,那就得自个儿操心释放,用delete
或free
,不然内存泄漏就找上门了。
举个例子:
int* p = new int[10];
// 记得释放
delete[] p;
这个p
本身在栈里,但它指的数组是在堆上,这区别你得分清。堆分配慢,容易碎片化,效率不高;栈虽然小,但速度快,管理也轻松。这事就像吃饭,是叫外卖(堆)还是自己煮(栈),都能吃,但成本和灵活性不一样。
还有个容易踩雷的点:delete 要配 new,delete[]配 new[],别混着用。用了new int[5]
,就得delete[]
,别偷懒。
如果你刚入门 C++或者写项目写得多了,感觉内存老不稳,那建议你看看这篇文章,讲得还蛮细的,挺适合开发时候做个快速回顾的。
想再进阶点?可以了解下VLD 内存泄漏检测,挺好用的,能帮你追踪忘了释放的地方。
415.5KB
文件大小:
评论区