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

首頁 > 編程 > C > 正文

剖析C語言的內存布局

2020-02-24 14:31:47
字體:
來源:轉載
供稿:網友

隨著我們隊C語言的深入學習,我們可以知道C語言和我們的內存息息相關,為了讓我們可以更好的學習這門語言,那么我們就要了解C語言的內存布局,現在我們就去剖析C語言的內存布局。

本節注重分清幾個概念:.text .data .bss ? 堆 ? 棧 ? ?靜態存儲區 ? ?只讀存儲區等

從程序到a.out 把程序變成.text ?.data ?.bss ?是編譯原理完成的過程

從a.out把程序映射到對應的內存地址空間是操作系統完成的,也就是在操作系統創建進程的時候完成的,在描述進程的那個結構體中。

我們常說的堆是為了申請動態內存的時候使用的,malloc。

棧是為了在函數中切換使用的,即存放函數中的局部變量。(堆和棧是操作系統分配的,所有不在a.out中)

靜態存儲區是用來存放全局變量,靜態變量的,理解static的用法,即包括.bss段(未初始化的)和.data段(初始化的)。

只讀存儲區是用來存放一些常量,字符串,只讀的數據的,理解char * p="hello!!" 不是野指針的原因。
程序段(.text)是用來存放可執行代碼的。

總結下:其實只讀存儲區,又叫做代碼區,這個區存放的是,只讀常量char* p="hello!!"???? #define PI 3.14?????枚舉類型???? 程序代碼。

所以說一般對于內存可以分成四個區:堆??????? ?棧?????????靜態區???????? 只讀存儲區????? ??

注意:在棧中 不僅僅保存了數據??? 應該也保存了程序的機器碼? 之后就轉換成了.text段了

注意:其中有些不是特別清晰的問題,如a.out中各段的生成,a.out到內存的映射,a.out映射后的堆和棧是怎么生成的,根據什么生成的?這些問題都是編譯原理和操作系統的知識點。

以上就是武林小編為大家剖析C語言的內存布局的內容,需要的朋友可以過來參考下

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 桂平市| 浦江县| 蛟河市| 田林县| 河东区| 海兴县| 那曲县| 阿巴嘎旗| 琼中| 屏南县| 广饶县| 游戏| 孙吴县| 广宗县| 葫芦岛市| 岚皋县| 崇阳县| 新疆| 澎湖县| 邛崃市| 洛阳市| 大足县| 论坛| 龙门县| 麻阳| 德保县| 瓦房店市| 万宁市| 襄汾县| 左贡县| 交城县| 凭祥市| 云南省| 安仁县| 林西县| 丽江市| 靖西县| 湘乡市| 汉源县| 黎川县| 弋阳县|