1 回答

TA貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超6個(gè)贊
類不會(huì)儲(chǔ)存在什么地方,只是告訴程序,如何去創(chuàng)建這個(gè)類型的變量、需要多少個(gè)字節(jié)、以及如何銷毀等等等。
至于實(shí)例,也可以說(shuō)對(duì)象,在什么地方,就是我們通常說(shuō)的堆棧。拋開(kāi)全局常量區(qū)以及靜態(tài)存儲(chǔ)區(qū)這些不談。
如果你new了一個(gè)對(duì)象(還有其他的c的分配方式,比如malloc不推薦使用),這種就屬于動(dòng)態(tài)分配內(nèi)存,分配在堆上。堆相對(duì)于棧很大,所以很多時(shí)候我們分配在堆上,但也意味著,你需要知道什么時(shí)候去銷毀他,所以與delete或delete []成對(duì)出現(xiàn)。
Student stu; 類似于這樣的我們沒(méi)有使用new的對(duì)象就分配在了棧上。他的對(duì)象是自己管理的。在 {}函數(shù)體中的最后會(huì)自動(dòng)按照棧的后進(jìn)先出,銷毀對(duì)象。所以不需要你去管理對(duì)象的內(nèi)存,但也意味著對(duì)象所在的生命周期通常就是一個(gè){}中。
補(bǔ)充,堆除了比??臻g大,它是在程序運(yùn)行時(shí)來(lái)分配內(nèi)存的,比如分配
int * i = new i[ m] ; //m 是在程序運(yùn)行后,從輸入中得到的數(shù)值。
但棧不可以,int i[ m ];//這里必須是常量 const int m = 1000; 在程序編譯的時(shí)候,他就必須知道數(shù)組有多大。
- 1 回答
- 0 關(guān)注
- 517 瀏覽
添加回答
舉報(bào)