- 相關(guān)推薦
c語言stack(棧)和heap(堆)的使用
在計算機領(lǐng)域,堆棧是一個不容忽視的概念,我們編寫的C語言程序基本上都要用到。本文主要介紹了c語言stack(棧)和heap(堆)的使用詳解,供參考學(xué)習(xí),感興趣的小伙伴們可以參考一下!想了解更多相關(guān)信息請持續(xù)關(guān)注我們應(yīng)屆畢業(yè)生考試網(wǎng)!
一、預(yù)備知識—程序的內(nèi)存分配
一個由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)制代碼。
二、例子程序
代碼如下:
//main.cpp
int a=0; //全局初始化區(qū)
char *p1; //全局未初始化區(qū)
main()
{
intb;棧
char s[]="abc"; //棧
char *p2; //棧
char *p3="123456"; //123456 主站蜘蛛池模板: 麻城市| 福鼎市| 玛沁县| 武功县| 长泰县| 泌阳县| 澄迈县| 天津市| 乌海市| 麻阳| 黄冈市| 新乡县| 翼城县| 突泉县| 通化县| 鹿泉市| 虹口区| 小金县| 富顺县| 砚山县| 浏阳市| 胶州市| 寻乌县| 鹤山市| 高州市| 安康市| 日喀则市| 屯留县| 天水市| 凤冈县| 宝鸡市| 保亭| 苗栗县| 柳河县| 南丹县| 垫江县| 兴安县| 海原县| 沙雅县| 彭山县| 崇明县|