国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

c/c++堆棧分布及其設置方法

2020-02-19 15:58:32
字體:
來源:轉載
供稿:網友

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


int a = 0;//全局初始化區
char*p1;//全局未初始化區
main()
{
????intb;//棧
????chars[] = "abc";//棧
????char*p2;//棧
????char*p3 = "123456";//123456/0在常量區,p3在棧上。
????static int c =0;//全局(靜態)初始化區
????p1 = (char*)malloc(10);
????p2 = (char*)malloc(20);//分配得來的10和20字節的區域就在堆區。
}

strcpy(p1, "123456"); 123456/0放在常量區,編譯器可能會將它與p3所指向的”123456"優化成一個地方。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 滕州市| 平遥县| 杭锦后旗| 罗江县| 堆龙德庆县| 正安县| 恩平市| 辰溪县| 达日县| 叙永县| 竹北市| 连江县| 美姑县| 阳原县| 凌云县| 镇雄县| 道孚县| 苏州市| 滕州市| 梅河口市| 南川市| 咸宁市| 来安县| 斗六市| 舞阳县| 崇礼县| 丰城市| 衡水市| 青阳县| 神木县| 电白县| 龙游县| 连平县| 嘉祥县| 成武县| 丹巴县| 新建县| 阿荣旗| 芒康县| 秭归县| 金平|