What is the best way to manage the lifetime of an object variable?
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
When should I use the new keyword in C++?
我不是一个专业的程序员,我只有小型项目的经验,所以我在理解这里发生的事情时遇到了一些麻烦。
我通常使用
现在我正在创建一个包含无限循环的应用程序。
我的问题是,哪个选项是管理内存使用的更好方法(导致内存使用量减少)?
正常声明(对我来说)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | #include <stdio.h> #include <iostream> #include <deque> using namespace std; class myclass { public: int a; float b; deque<int> array; myclass() {cout <<"myclass constructed ";} ~myclass() {cout <<"myclass destroyed ";} //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; } |
使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | #include <stdio.h> #include <iostream> #include <deque> using namespace std; class myclass { public: int a; float b; deque<int> array; myclass() {cout <<"myclass constructed ";} ~myclass() {cout <<"myclass destroyed ";} //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使用更少的内存并更有效地释放双端队列。 那是对的吗? 他们之间的[其他]差异是什么?
我真的很困惑在哪里使用每个选项。
使用第一个选项。 第一个选项在本地存储中创建对象实例,而第二个选项在免费存储(a.k.a堆)上创建它。 在堆上创建对象比在本地存储中"更昂贵"。
始终尽量避免在C ++中使用
这个问题的答案是一个很好的解读:在C ++中,为什么要尽可能少地使用