如何最好地管理对象变量的生命周期?
如何最好地管理对象变量的生命周期?
这个问题已经有了答案:
可能重复:
我不是专业的程序员,只有在小项目中工作的经验,所以我有点难以理解这里发生了什么。
我通常使用 class_name var_name
创建对象。但是现在我正在“学习”Objective-C,几乎所有东西都是指针,并且您可以更好地控制内存使用。
现在我正在创建一个包含无限循环的应用程序。
我的问题是,哪种选项更好地管理内存使用(导致内存使用更少)?
- 正常声明(对我而言)
#include #include #include using namespace std; class myclass { public: int a; float b; deque array; myclass() {cout <<"myclass constructed\n";} ~myclass() {cout <<"myclass destroyed\n";} //Other methods int suma(); int resta(); }; int main(int argc, char** argv) { myclass hola; for(1) { // Work with object hola. hola.a = 1; } return 0; }
- 使用
new
和delete
#include #include #include using namespace std; class myclass { public: int a; float b; deque array; myclass() {cout <<"myclass constructed\n";} ~myclass() {cout <<"myclass destroyed\n";} //Other methods int suma(); int resta(); }; int main(int argc, char** argv) { myclass hola; for(1) { myclass *hola; hola = new myclass; // Work with object hola. hola->a = 1; delete hola; } return 0; }
我认为选项2使用更少的内存并更有效地释放deque。 是这样吗? 他们之间的其他区别是什么?
我真的很困惑,不知道何时使用每个选项。
admin 更改状态以发布 2023年5月24日
使用第一种选项。第一种选项在本地存储中创建对象实例,而第二种选项在自由存储区(也称为堆)中创建对象。在堆上创建对象比在本地存储中创建对象更“昂贵”。
尽可能避免在C++中使用 new
。
这个问题的答案是一个不错的阅读材料:在C++中,为什么应该尽可能少使用new
?