c語言 記憶體四區基本模型 堆疊區

2021-10-09 18:57:44 字數 2110 閱讀 7767

資料型別總結

資料型別可理解為建立變數的模具(模子);是固定記憶體大小的別名。

資料型別的作用:編譯器預算物件(變數)分配的記憶體空間大小

資料型別大小計算(sizeof)

可以給已存在的資料型別起別名typedef

記憶體四區模型

靜態儲存區和堆區的一些理解:

#include

#include

#include

char

*getstr1()

char

*getstr2()

intmain()

上述函式示意圖

堆區和棧區

#define _crt_secure_no_warnings

#include

#include

#include

char

*get_num

(int num)

return p1;

}char

*get_num2()

intmain()

else

//printf("tmp=%s /n", tmp);

tmp =

get_num2()

;//系統呼叫完這個函式後,會把它析構,那麼tmp指向原來buf陣列的首位址就會出錯

printf

("tmp=%s /n"

, tmp)

;//這裡會列印亂碼

堆疊的開口屬性測試

#define _crt_secure_no_warnings

#include

#include

#include

//一般認為:棧的開口向下

堆的開口朝上

//buf的記憶體位址buf+1,永遠向上

void

main()

;printf

("&buf[1]= %d ,&buf[2]= %d \n"

,&buf[1]

,&buf[2]

);printf

("&a: %d =,&b :%d "

,&a,

&b);

system

("pause");

return

;}```

![在這裡插入描述]

**函式呼叫模型*

*如圖所示 main是主函式 fa fb 是被呼叫函式

![在這裡插入描述]

記憶體四區模型

記憶體可以先粗略的分為四個區,分別是 區,資料區,棧區和堆區。其中,資料區可以分為全域性區 靜態區 常量區。資料區內容的生命週期從程式開始到程式終止 棧區的內容從函式左括號開始,到右括號為止,函式結束後,記憶體自動釋放 堆區的內容由程式設計師自己開闢,手動釋放。區 程式指令 資料區 全域性區 靜態區...

C語言記憶體四區模型分析

圖1 1 記憶體四區模型是c語言學習的乙個重點也是乙個難點,大多程式設計師往往注重 的編寫而不注重 在執行中所進行的記憶體的變化而導致程式出現問題,嚴重時導致程式失控崩潰.圖1 1很直觀的表示記憶體當中儲存的資料型別,以及記憶體之間的關聯。1.c語言的記憶體區分 1.1 記憶體四區 1.1.1 區 ...

c語言記憶體四區( )

圖1 記憶體四區模型 流程說明 1 作業系統把物理硬碟 load到記憶體 2 作業系統把c 分成四個區 3 作業系統找到main函式入口執行 乙個由c c 編譯的程式占用的記憶體分為以下幾個部分 1 棧區 stack 由編譯器自動分配釋放 存放函式的引數值,區域性變數的值等。其操作方 式類似於資料結...