c++中的類和實例分別存儲在什么地方
1 回答
jeck貓
TA貢獻1909條經驗 獲得超7個贊
類不會儲存在什么地方,只是告訴程序,如何去創建這個類型的變量、需要多少個字節、以及如何銷毀等等等。
至于實例,也可以說對象,在什么地方,就是我們通常說的堆棧。拋開全局常量區以及靜態存儲區這些不談。
如果你new了一個對象(還有其他的c的分配方式,比如malloc不推薦使用),這種就屬于動態分配內存,分配在堆上。堆相對于棧很大,所以很多時候我們分配在堆上,但也意味著,你需要知道什么時候去銷毀他,所以與delete或delete []成對出現。
Student stu; 類似于這樣的我們沒有使用new的對象就分配在了棧上。他的對象是自己管理的。在 {}函數體中的最后會自動按照棧的后進先出,銷毀對象。所以不需要你去管理對象的內存,但也意味著對象所在的生命周期通常就是一個{}中。
補充,堆除了比??臻g大,它是在程序運行時來分配內存的,比如分配
int * i = new i[ m] ; //m 是在程序運行后,從輸入中得到的數值。
但棧不可以,int i[ m ];//這里必須是常量 const int m = 1000; 在程序編譯的時候,他就必須知道數組有多大。
- 1 回答
- 0 關注
- 871 瀏覽
添加回答
舉報
0/150
提交
取消
