亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

通過一個小例子來簡單理解C語言中的內(nèi)存空間管理

2020-05-23 14:13:34
字體:
供稿:網(wǎng)友

這篇文章主要介紹了通過一個小例子來簡單理解C語言中的內(nèi)存空間管理,涉及到堆和棧等數(shù)據(jù)結(jié)構(gòu)的基本知識,需要的朋友可以參考下

對于一個C語言程序而言,內(nèi)存空間主要由五個部分組成代碼段(.text)、數(shù)據(jù)段(.data)、BSS段(.bss),堆和棧組成,其中代碼段,數(shù)據(jù)段和BSS段是編譯的時候由編譯器分配的,而堆和 棧是程序運行的時候由系統(tǒng)分配的。布局如下

通過一個小例子來簡單理解C語言中的內(nèi)存空間管理

在上圖中,由編譯器分配的地址空間都是在連接的時候分配的,而運行時分配的空間是在程序運行時由系統(tǒng)分配的

BSS段:BSS段(bss segment)通常是指用來存放程序中未初始化的全局變量和靜態(tài)變量 (這里注意一個問題:一般的書上都會說全局變量和靜態(tài)變量是會自動初始化的,那么哪來的未初始化的變量呢?變量的初始化可以分為顯示初始化和隱式初始化,全局變量和靜態(tài)變量如果程序員自己不初始化的話的確也會被初始化,那就是不管什么類型都初始化為0,這種沒有顯示初始化的就是我們這里所說的未初始化。既然都是0那么就沒必要把每個0都存儲起來,從而節(jié)省磁盤空間,這是BSS的主要作用)的一塊內(nèi)存區(qū)域。BSS是英文Block Started by Symbol的簡稱。BSS段屬于靜態(tài)內(nèi)存分配。 BSS節(jié)不包含任何數(shù)據(jù),只是簡單的維護開始和結(jié)束的地址,即總大小,以便內(nèi)存區(qū)能在運行時分配并被有效地清零。BSS節(jié)在應用程序的二進制映象文件中并不存在,即不占用磁盤空間 而只在運行的時候占用內(nèi)存空間 ,所以如果全局變量和靜態(tài)變量未初始化那么其可執(zhí)行文件要小很多。

數(shù)據(jù)段:數(shù)據(jù)段(data segment)通常是指用來存放程序中已初始化的全局變量和靜態(tài)變量的一塊內(nèi)存區(qū)域。數(shù)據(jù)段屬于靜態(tài)內(nèi)存分配,可以分為只讀數(shù)據(jù)段和讀寫數(shù)據(jù)段。 字符串常量等,但一般都是放在只讀數(shù)據(jù)段中 。

代碼段:代碼段(code segment/text segment)通常是指用來存放程序執(zhí)行代碼的一塊內(nèi)存區(qū)域。這部分區(qū)域的大小在程序運行前就已經(jīng)確定,并且內(nèi)存區(qū)域通常屬于只讀, 某些架構(gòu)也允許代碼段為可寫,即允許修改程序。在代碼段中,也有可能包含一些只讀的常數(shù)變量,例如字符串常量等,但一般都是放在只讀數(shù)據(jù)段中 。

堆(heap):堆是用于存放進程運行中被動態(tài)分配的內(nèi)存段,它的大小并不固定,可動態(tài)擴張或縮減。當進程調(diào)用malloc等函數(shù)分配內(nèi)存時,新分配的內(nèi)存就被動態(tài)添加到堆上(堆被擴張);當利用free等函數(shù)釋放內(nèi)存時,被釋放的內(nèi)存從堆中被剔除(堆被縮減)

棧 (stack):棧又稱堆棧, 是用戶存放程序臨時創(chuàng)建的局部變量,也就是說我們函數(shù)括弧“{}”中定義的變量(但不包括static聲明的變量,static意味著在數(shù)據(jù)段中存放變 量)。除此以外,在函數(shù)被調(diào)用時,其參數(shù)也會被壓入發(fā)起調(diào)用的進程棧中,并且待到調(diào)用結(jié)束后,函數(shù)的返回值也會被存放回棧中。由于棧的先進先出特點,所以 棧特別方便用來保存/恢復調(diào)用現(xiàn)場。從這個意義上講,我們可以把堆??闯梢粋€寄存、交換臨時數(shù)據(jù)的內(nèi)存區(qū)。注意:??臻g是向下增長的,每個線程有一個自己的棧,在linux上默認的大小是8M,可以用ulimit查看和修改。

棧系統(tǒng)提供的功能,特點是快速高效,缺點是有限制,數(shù)據(jù)不靈活;而堆是函數(shù)庫提供的功能,特點是靈活方便,數(shù)據(jù)適應面廣泛,但是效率有一定降低。

以下是一個簡單的c文件,環(huán)境是OS--Linux,ARCH--PPC

 

 
  1. ##sta.c### 
  2. #include <stdio.h> 
  3.  
  4. int kk[100] = {1,2,3,4,5}; 
  5. int tt[100]; 
  6. int ii; 
  7.  
  8. int main() 
  9. int i; 
  10. static int si; 
  11. char a[10]= "abcd"
  12. printf("i is %d/n"); 
  13. return 0; 
  14.  
  15.  
  16.  
  17. 經(jīng)過gcc -S sta.c之后,生成的匯編代碼如下 
  18.  
  19. ##sta.s### 
  20.  
  21.  
  22.  
  23. .file "sta.c" 
  24. .gnu_attribute 4, 2 
  25. .gnu_attribute 8, 3 
  26. .globl kk 
  27. .section ".data" 
  28. .align 2 
  29. .type kk, @object 
  30. .size kk, 400 
  31. kk: 
  32. .long 1 
  33. .long 2 
  34. .long 3 
  35. .long 4 
  36. .long 5 
  37. .zero 380 
  38. .lcomm si.2254,4,4 
  39. .type si.2254, @object 
  40. .section .rodata 
  41. .align 2 
  42. .LC1: 
  43. .string "i is %d/n" 
  44. .align 2 
  45. .LC0: 
  46. .string "abcd" 
  47. .zero 5 
  48. .section ".text" 
  49. .align 2 
  50. .globl main 
  51. .type main, @function 
  52.  
  53. main: 
  54. stwu 1,-32(1) 
  55. mflr 0 
  56. stw 0,36(1) 
  57. stw 31,28(1) 
  58. mr 31,1 
  59. lis 9,.LC0@ha 
  60. la 9,.LC0@l(9) 
  61. lwz 0,0(9) 
  62. lbz 9,4(9) 
  63. stw 0,12(31) 
  64. stb 9,16(31) 
  65. li 0,0 
  66. stb 0,17(31) 
  67. li 0,0 
  68. stb 0,18(31) 
  69. li 0,0 
  70. stb 0,19(31) 
  71. li 0,0 
  72. stb 0,20(31) 
  73. li 0,0 
  74. stb 0,21(31) 
  75. lis 9,.LC1@ha 
  76. la 3,.LC1@l(9) 
  77. crxor 6,6,6 
  78. bl printf 
  79. li 0,0 
  80. mr 3,0 
  81. lwz 11,0(1) 
  82. lwz 0,4(11) 
  83. mtlr 0 
  84. lwz 31,-4(11) 
  85. mr 1,11 
  86. blr 
  87. .size main, .-main 
  88. .comm tt,400,4 
  89. .comm ii,4,4 
  90. .ident "GCC: (GNU) 4.2.3" 
  91. .section .note.GNU-stack,"",@progbits 

Note: 一般編譯器和操作系統(tǒng)實現(xiàn)來說,對于虛擬地址空間的最低(從0開始的幾K)的一段空間是未被映射的,也就是說它在進程空間中,但沒有賦予物理地址,不能被訪問。這也就是對空指針的訪問會導致crash的原因 ,因為空指針的地址是0。至于為什么預留的不是一個字節(jié)而是幾K,是因為內(nèi)存是分頁的,至少要一頁;另外幾k的空間還可以用來捕捉使用空指針的情況。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
五月婷婷中文字幕| 99国产精品久久久久久久久久久| 成人精品视频99在线观看免费| 欧美疯狂做受xxxx富婆| 国产99久久| 欧美巨大黑人极品精男| 亚洲欧美日韩精品| 久久中文字幕二区| 牛夜精品久久久久久久| 动漫美女被爆操久久久| 中文精品99久久国产香蕉| 95精品视频在线| 日韩高清dvd碟片| 欧美激情免费在线| 超碰色偷偷男人的天堂| 亚洲码无人客一区二区三区| 欧妇女乱妇女乱视频| 青娱乐av在线| 欧美亚洲国产精品| 一区二区在线观看免费| 日韩有码片在线观看| 国产91露脸中文字幕在线| 蜜桃狠狠狠狠狠狠狠狠狠| 久久人妻免费视频| 色屁屁草草影院ccyy.com| 青青在线免费观看视频| 中文字幕 久热精品 视频在线| 超碰超碰在线观看| 欧美视频免费在线观看| 一本色道久久综合| 国产在线观看a| 欧亚精品中文字幕| 欧美日韩免费电影| 毛片无码国产| 五月天婷婷视频| 久久婷婷成人综合色| 亚州国产精品视频| 一区二区三区中文免费| 五月婷婷在线播放| 欧美黑人经典片免费观看| 欧美一级二级三级| 国产色视频网站| 污视频在线看网站| 亚洲国产精品一区二区久久hs| 欧美一级做a| 成码无人av片在线观看网站| 亚洲国产精品999| 欧美电影院免费观看| 精精国产xxxx视频在线播放| 五月天激情综合网| 日韩在线影视| 西游记1978| 国产一区不卡| 欧洲精品国产| 国产精品91一区| 国产一级淫片a| 久久国产精品久久久久久电车| 综合图区欧美| 中文字幕欧美人与畜| 欧美三级日韩三级国产三级| 成人av手机在线观看| 91最新在线观看| 亚洲伊人伊成久久人综合网| 国产三级一区| 欧美特级黄色片| 精品一区二区三区免费播放| 蜜桃传媒av| 看片的网站亚洲| 免费观看日韩av| 国产中文字幕免费观看| 91豆麻精品91久久久久久| 日韩欧美电影| 亚洲天堂精品在线| 青春草视频在线观看| 亚洲人成绝费网站色ww| 一区国产精品视频| 日韩一区二区中文字幕| 国产精品剧情在线亚洲| 一区二区三区四区久久| 国产九色91| 夜夜骚av一区二区三区| 亚洲成人一二三区| 成人污网站在线观看| 亚洲japanese制服美女| 国产精品高清网站| 亚洲男人天堂久久| www.三区| 国产中文精品久高清在线不| 美女视频免费一区| 中文字幕人妻色偷偷久久| 午夜刺激在线| 欧美又粗又硬又大久久久| wwww.国产| www.午夜色大片| 性欧美精品中出| 91免费看片在线观看| 成年人在线观看av| 精品一区二区三区久久| 欧洲专线二区三区| 国产精品美腿一区在线看| 91麻豆精品国产91久久久平台| 久久久久久婷婷| 91社区在线| 午夜剧场在线免费观看| 国产精品视频线看| 欧美一级一区二区三区| 久久亚洲在线| 欧美性猛交xxx| 中文无码日韩欧| 国产高清视频一区三区| 欧美性bbb| 中文字幕中文字幕在线一区| 欧美黄片一区二区三区| 在线欧美三级| 国产中文字幕免费| 黄无遮挡免费网站| 日韩免费电影一区| 精品99久久久久成人网站免费| 欧美精品色婷婷五月综合| 亚洲午夜精品久久久久久人妖| 欧美精品日韩少妇| 久久久这里只有精品视频| 久久国产精品免费看| 成人在线视频亚洲| 久久综合在线观看| 天天操中文字幕| 天堂va欧美ⅴa亚洲va一国产| 99草草国产熟女视频在线| 亚洲男人第一av网站| 黄色一区三区| 羞羞色午夜精品一区二区三区| 欧美18一12sex性处hd| 任我爽在线视频精品一| 91国产在线播放| 精品3atv在线视频| 一级成人国产| 日韩在线成人| jvid一区二区三区| 亚洲自拍小视频免费观看| 国内精品女同女同一区二区三区| 国产 日韩 亚洲 欧美| 在线一区二区三区四区五区| 国产野外作爱视频播放| 日本护士...精品国| 成人在线免费高清视频| 岳张嘴把我的精子吞下去| 欧美色偷偷大香| 国产精品99一区二区三区| 日本精品免费观看| 加勒比久久高清| 亚洲小说区图片区情欲小说| 伊色综合久久之综合久久| 久久成人久久鬼色| 4438全国亚洲精品在线观看视频| 欧美理论片在线| 91av俱乐部| 亚洲第一av网站| 国产av熟女一区二区三区| 日韩欧美不卡| 日本久久精品电影| 国产国语videosex另类| 日本高清视频在线播放| 国产免费电影网站入口| 欧美理论影院| 亚洲人成精品久久久| 免费av网站在线观看| 欧美91看片特黄aaaa| 一本久久知道综合久久| 国产麻豆视频精品| 日韩电影在线观看完整版| 亚洲欧美日韩久久精品| 亚洲女女做受ⅹxx高潮| 黄色一级片免费播放| 国产精品午夜一区二区三区| 精品毛片网大全| 中文字幕日韩精品一区| 中文字幕日产av一二三区| 久久久免费观看视频| 成人亚洲一区二区一| 老汉色老汉首页av亚洲| 亚洲天堂男人的天堂| 乱精品一区字幕二区| 亚洲午夜视频| 欧美日韩大片一区二区三区| 欧美日韩三级在线观看| 午夜在线视频一区二区区别| 国产成人免费视频网站| 宅男视频免费在线观看视频| 亚洲精品手机在线| 亚洲一区二区三区日本久久九| 在线天堂视频| av在线收看| 麻豆国产在线视频| 18精品爽视频在线观看| 亚洲欧洲激情在线乱码蜜桃| 精品久久国产视频| 在线日本高清免费不卡| 青青艹在线视频| 天堂av8在线| 熟妇无码乱子成人精品| 91黄色激情网站| 一区二区三区日韩在线观看| 欧美精品videos极品| 色橹橹高清视频在线播放| 亚洲一级片免费看| 四虎在线免费观看| 做a视频在线观看| 久久久国产精品不卡| 91人人澡人人爽人人精品| 在线电影院国产精品| 在线免费看91| 色综合久久久无码中文字幕波多| 国产精品久久久久影视| 日韩精品系列| 国产cdts系列另类在线观看| 亚洲国产91| 中文字幕日韩在线播放| 最新中文字幕日本| 好爽好深好紧好大| 国产麻豆综合视频在线观看| 好吊视频一二三区| 欧美日韩在线播| 亚洲日本乱码在线观看| 久久久久亚洲av无码专区桃色| 亚洲三级av| av在线中文| 在线观看免费黄网站| 国产精品久久久久国产精品日日| 品天堂xxxx高清| 欧美va亚洲va| 亚洲成人av影片| 国产丝袜护土调教在线视频| 婷婷综合久久一区二区三区| 国产精品入口免费视| 国产最新免费视频| 三级毛片在线| 日韩福利在线视频| 1区2区3区国产精品| 97视频在线免费观看| 欧美在线播放一区| 亚洲mv大片欧洲mv大片精品| 麻豆国产在线视频| 在线免费观看污视频| 日韩激情视频在线| 久久久久久久久久久妇女| 久久国产精品 国产精品| 色婷婷成人网| av日韩在线播放| 欧美巨猛xxxx猛交黑人97人| 啪一啪鲁一鲁2019在线视频| 91丝袜国产在线播放| 精品久久久久久久免费人妻| 欧美电影在线观看网站| 色综合97天天综合网| 久久久久久欧美精品色一二三四| 成人av在线一区二区| 亚洲成人av网址| 国产va在线播放| 极品尤物av丝袜美腿在线观看| 日韩欧美电影一区二区| 国产51人人成人人人人爽色哟哟| av一级亚洲| 亚洲2020天天堂在线观看| 国产乱子轮xxx农村| 国产精品99久久久久久动医院| 3d动漫精品啪啪一区二区三区免费| 欧美日韩午夜视频在线观看| 亚洲综合999| 免费观看国产精品视频| 精品176二区| 日本精品一区二区三区在线观看视频| 久久久久久久久久码影片| 香蕉视频网站在线| 国产精品入口久久| 久久人妻一区二区| 亚洲v在线看| 国产精品热视频| 老色鬼久久亚洲一区二区| 亚洲欧美日韩偷拍| 久久成人一区| 男人的天堂久久精品| 日韩av网址大全| 国产在线视频在线| 日本三日本三级少妇三级66| 国产精品yjizz视频网一二区| 视频精品国内| 91传媒在线观看| 在线免费观看av网| 国产精品拍拍拍| 亚洲午夜久久久影院伊人| av资源网一区| 国产精品动漫网站| 婷婷五月在线视频| 超薄丝袜一区二区| 国产黄色片av| 国产精品v亚洲精品v日韩精品| 日本黄色大片在线观看| 日韩一区二区三区免费观看| 曰本一区二区| 色婷婷久久久亚洲一区二区三区| 亚洲裸色大胆大尺寸艺术写真| 一级香蕉视频在线观看| 日韩成人黄色| 九九热在线播放| 欧美亚洲日本| 欧美精品色哟哟| 国产精品亚洲一区二区三区妖精| 一级特黄性色生活片| 日韩经典一区二区三区| 污视频免费在线观看| 中文字幕在线观看你懂的| 自拍偷拍欧美一区| 九九热r在线视频精品| eeuss网址直达入口| 国内精品视频一区二区三区| 人人妻人人澡人人爽精品欧美一区| 一区二区三区免费在线观看| 精品久久久久久久久久久久久久久久久久| 免费成人高清在线视频| 中文字幕一区二区三区在线观看| 最色在线观看| 黄色的网站免费| 国产精品理人伦一区二区三区| 国产精品一二三视频| 欧美高清一级片在线| 91精品欧美久久久久久动漫| 人妻少妇被粗大爽9797pw| 污污的视频免费|