C 語言之內(nèi)存管理

一. 存儲區(qū)的劃分

由高地址向低地址:

1. 棧區(qū) ? ? ? ? int a = 3;

2. 堆區(qū) ? ? ? ? malloc(100);

3. 靜態(tài)區(qū) ? ? ?static int b = 5;

4. 常量區(qū) ? ? ?"carson"

5. 代碼區(qū) ? ? ?void func();``````````

二. 棧區(qū)

1. 不允許在函數(shù)體內(nèi)返回一個在棧內(nèi)存中分配的局部變量的地址.否則函數(shù)調(diào)用后主調(diào)函數(shù)中接收地址的指針就會因為局部變量被回收而獲取不到有效數(shù)據(jù),此指針被稱為野指針或者僵尸指針.

例如:

char *func(void) {

return string;

}

char *p = func();

printf("%p\n",p);

即不可以返回函數(shù)中的局部變量的地址,可能會取不到數(shù)據(jù).


如下即可:

//int max (int a, int b) {

//retrun a > b ? a : b;

//}

int result = max(3,5);

printf("%d\n",result);


三. 堆區(qū)

堆區(qū)空間屬于開發(fā)人員根據(jù)需求調(diào)用分配函數(shù)自由分配的空間,再使用完成后需要調(diào)用free函數(shù)標(biāo)記刪除.所謂標(biāo)記刪除,即:對應(yīng)空間并不會被清空數(shù)據(jù),而是通過添加標(biāo)記的形式,告訴操作系統(tǒng)這塊內(nèi)存空間可以重新參與內(nèi)存分配,其保存的數(shù)據(jù)直到下一次占用這塊空間的數(shù)據(jù)覆蓋.

malloc返回的數(shù)據(jù)類型時? void *,此類型時泛型指針,只描述返回值是地址類型,并不確定該空間將來存儲何種類型的數(shù)據(jù).具體存儲數(shù)據(jù)的類型由接收改地址的指針類型確定.

realloc(address,size)函數(shù)是為已有堆空間重新指定大小的函數(shù),其有兩個特征:

1. 如果已有空間后還有足夠大的可用空間,則在已有空間后追加新的空間.

2. 如果已有空間后并無足夠大的可用空間,則在堆區(qū)其他區(qū)域開辟完整空間,并將原有空間的內(nèi)容拷貝到新空間頭部,釋放原有空間.

calloc(n,size)開辟n個指定大小的連續(xù)堆空間,并按字節(jié)清零.比malloc函數(shù)多了一步初始化的過程.


四. 靜態(tài)區(qū)

靜態(tài)區(qū)定義的變量需要使用static關(guān)鍵字修飾,該變量只定義一次,直到程序運行結(jié)束才會回收內(nèi)存.

五. 常量區(qū)

常量區(qū)的作用是保存常量數(shù)據(jù),常量區(qū)的數(shù)據(jù)只可讀,不能被修改.

六. 代碼區(qū)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • C語言中內(nèi)存分配 在任何程序設(shè)計環(huán)境及語言中,內(nèi)存管理都十分重要。在目前的計算機系統(tǒng)或嵌入式系統(tǒng)中,內(nèi)存資源仍然是...
    一生信仰閱讀 1,310評論 0 2
  • 指針是C語言中廣泛使用的一種數(shù)據(jù)類型。 運用指針編程是C語言最主要的風(fēng)格之一。利用指針變量可以表示各種數(shù)據(jù)結(jié)構(gòu); ...
    朱森閱讀 3,614評論 3 44
  • 前言 C語言作為一門應(yīng)用途廣泛、功能強大、使用靈活的面向過程式編程語言。既可用于編寫應(yīng)用軟件,又能用于編寫系統(tǒng)軟件...
    老板娘來盤一血閱讀 13,284評論 32 83
  • 棧是一種遵循后進先出原則的有序集合 新添加的或者待刪除的元素都保存在棧的末尾,稱為棧頂 相反,另一端叫做棧底 生活...
    sunny在未來等我們閱讀 526評論 0 0
  • 體驗入 最近經(jīng)??吹揭粋€詞:儀式感。在生活中,在工作中。比如說,每天上班前要描描眉,畫畫眼,打個cc霜,涂點小唇彩...
    Una笑笑閱讀 162評論 1 3

友情鏈接更多精彩內(nèi)容