新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 程序的內(nèi)存分配

程序的內(nèi)存分配

作者: 時間:2016-11-27 來源:網(wǎng)絡(luò) 收藏

答:一個由c/C++編譯的程序占用的內(nèi)存分為以下幾個部分
1、棧區(qū)(stack)—由編譯器自動分配釋放,存放函數(shù)的參數(shù)值,局部變量的值等。其操作方式類似于數(shù)據(jù)結(jié)構(gòu)中的棧。
2、堆區(qū)(heap)—一般由程序員分配釋放,若程序員不釋放,程序結(jié)束時可能由OS回收。注意它與數(shù)據(jù)結(jié)構(gòu)中的堆是兩回事,分配方式倒是類似于鏈表,呵呵。
3、全局區(qū)(靜態(tài)區(qū))(static)—全局變量和靜態(tài)變量的存儲是放在一塊的,初始化的全局變量和靜態(tài)變量在一塊區(qū)域,未初始化的全局變量和未初始化的靜態(tài)變量在相鄰的另一塊區(qū)域。程序結(jié)束后由系統(tǒng)釋放。
4、文字常量區(qū)—常量字符串就是放在這里的。程序結(jié)束后由系統(tǒng)釋放。
5、程序代碼區(qū)—存放函數(shù)體的二進(jìn)制代碼

本文引用地址:http://m.butianyuan.cn/article/201611/322087.htm

例子程序
這是一個前輩寫的,非常詳細(xì)
//main.cpp
inta=0;//全局初始化區(qū)
char*p1;//全局未初始化區(qū)
main()
{
intb;棧
chars[]="abc";//棧
char*p2;//棧
char*p3="123456";//123456