1. 程式人生 > >C++中使用new定義的變數和不使用new定義的變數區別

C++中使用new定義的變數和不使用new定義的變數區別

假設有一個類CTest,現定義兩個CTest的物件
CTest t1;
CTest *t2 = new CTest();
1.本質不同
t1為類物件。
t2為類物件的指標。

2.作用域不同
t1作用域限制在定義類物件的方法中,當方法結束時,類物件也會被系統釋放,不需要手工釋放,安全不會造記憶體洩露。
t2作用域為全域性,當程式結束時,需要使用delete進行手工釋放,系統不會自動釋放,如果忘記釋放,容易造成記憶體洩露

3.記憶體中存放地址不同
t1存放在堆中。
t2存放在棧中。