如何对你的代码进行内存消耗分析

在这里插入图片描述
在这里插入图片描述

对象生命周期

下面两种创建对象的语句有什么不同呢?
对于 Object myObject;,该对象被创建在栈上,它的特点就是脱离作用域后会自动销毁。而对于 new Object(),它会在堆上动态创建一个对象,它的特点就是即使脱离作用域,该对象也会一直存在,除非你手动释放(delete)它,否则就会出现内存泄漏。

所以一般为了延长对象的生命周期,一般都是通过 new 的方式创建的对象,通过 delete 方式删除对象,删除对象就是删除对象所占用的内存空间.

什么时候该使用 new?

你需要延长对象生命周期。 意思是说你想一直使用某个地址位置的变量,而不是它的副本,对于后者,我们更应该使用 Object myObject; 的语法。
你需要很多内存。 大家都知道,栈空间比堆空间小的多。
当你确实要用动态内存分配的话,我们应该用智能指针或者其它的 RAII 技术来管理这部分资源。

了解动态内存在 C++ 中是如何工作的是成为一名合格的 C++ 程序员必不可少的。C++ 程序中的内存分为两个部分:
栈:在函数内部声明的所有变量都将占用栈内存。
堆:这是程序中未使用的内存,在程

猜你喜欢

转载自blog.csdn.net/qq_21950671/article/details/131655307
今日推荐