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

首頁 > 系統 > iOS > 正文

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

2020-07-26 03:37:10
字體:
來源:轉載
供稿:網友

一個由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"優化成一個地方。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 敦化市| 化德县| 聂拉木县| 陇南市| 龙口市| 兴化市| 长阳| 通许县| 望奎县| 南安市| 神木县| 普兰店市| 犍为县| 樟树市| 吉首市| 伊宁市| 友谊县| 栾城县| 通化市| 定襄县| 琼海市| 蚌埠市| 新蔡县| 普陀区| 鹿邑县| 天峻县| 湖口县| 临夏市| 介休市| 象山县| 富阳市| 丰镇市| 石嘴山市| 湟源县| 西畴县| 汉阴县| 赞皇县| 安丘市| 贵港市| 桃园市| 铜川市|