在C++中,內(nèi)存分成4個(gè)區(qū),他們分別是堆,棧,靜態(tài)存儲(chǔ)區(qū)和常量存儲(chǔ)區(qū)
1)棧,就是那些由編譯器在需要的時(shí)候分配,在不需要的時(shí)候自動(dòng)清除的變量的存
儲(chǔ)區(qū).里面的變量通常是局部變量,函數(shù)參數(shù)等.
2)堆,又叫自由存儲(chǔ)區(qū),它是在程序執(zhí)行的過(guò)程中動(dòng)態(tài)分配的,它最大的特性就是動(dòng).
態(tài)性.由new分配的內(nèi)存塊,他們的釋放編譯器不去管,由我們的應(yīng)用程序去控制,
一般一個(gè)new就要對(duì)應(yīng)一個(gè)delete.如果程序員沒(méi)有釋放掉,那么在程序結(jié)束后,
操作系統(tǒng)會(huì)自動(dòng)回收.如果分配了堆對(duì)象,卻忘記了釋放,就會(huì)產(chǎn)生內(nèi)存泄漏.而
如果已釋放了對(duì)象,卻沒(méi)有將相應(yīng)的指針置為NULL,該指針就是"懸掛指針".
4)靜態(tài)存儲(chǔ)區(qū).所有的靜態(tài)對(duì)象,全局對(duì)象都于靜態(tài)存儲(chǔ)區(qū)分配.
5)常量存儲(chǔ)區(qū),這是一塊比較特殊的存儲(chǔ)區(qū),他們里面存放的是常量,不允許修改
(當(dāng)然,你要通過(guò)非正當(dāng)手段也可以修改,而且方法很多)
常量字符串都存放在靜態(tài)存儲(chǔ)區(qū),返回的是常量字符串的首地址.
1)棧,就是那些由編譯器在需要的時(shí)候分配,在不需要的時(shí)候自動(dòng)清除的變量的存
儲(chǔ)區(qū).里面的變量通常是局部變量,函數(shù)參數(shù)等.
2)堆,又叫自由存儲(chǔ)區(qū),它是在程序執(zhí)行的過(guò)程中動(dòng)態(tài)分配的,它最大的特性就是動(dòng).
態(tài)性.由new分配的內(nèi)存塊,他們的釋放編譯器不去管,由我們的應(yīng)用程序去控制,
一般一個(gè)new就要對(duì)應(yīng)一個(gè)delete.如果程序員沒(méi)有釋放掉,那么在程序結(jié)束后,
操作系統(tǒng)會(huì)自動(dòng)回收.如果分配了堆對(duì)象,卻忘記了釋放,就會(huì)產(chǎn)生內(nèi)存泄漏.而
如果已釋放了對(duì)象,卻沒(méi)有將相應(yīng)的指針置為NULL,該指針就是"懸掛指針".
4)靜態(tài)存儲(chǔ)區(qū).所有的靜態(tài)對(duì)象,全局對(duì)象都于靜態(tài)存儲(chǔ)區(qū)分配.
5)常量存儲(chǔ)區(qū),這是一塊比較特殊的存儲(chǔ)區(qū),他們里面存放的是常量,不允許修改
(當(dāng)然,你要通過(guò)非正當(dāng)手段也可以修改,而且方法很多)
常量字符串都存放在靜態(tài)存儲(chǔ)區(qū),返回的是常量字符串的首地址.