一個程序的內(nèi)存空間分布

一個程序的內(nèi)存空間:

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

  • 數(shù)據(jù)段: 儲存已被初始化了的靜態(tài)數(shù)據(jù)末贾。數(shù)據(jù)段(data segment )通常是指用來存放程序中已初始化的全局變量的一塊內(nèi)存區(qū)域。數(shù)據(jù)段屬于靜態(tài)內(nèi)存分配整吆。

  • BSS 段:未初始化的數(shù)據(jù)段. BSS 段(bss segment )通常是指用來存放程序中未初始化的全局變量的一塊內(nèi)存區(qū)域拱撵。BSS 是英文Block Started by Symbol 的簡稱辉川。BSS 段屬于靜態(tài)內(nèi)存分配。

[ 注意:BSS段 和 data段的區(qū)別是 拴测,如果一個全局變量沒有被初始化(或被初始化為0)乓旗,那么他就存放在bss段;如果一個全局變量被初始化為非0集索,那么他就被存放在data段屿愚。]

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

  • 棧(stack) :棧又稱堆棧,是用戶存放程序臨時創(chuàng)建的局部變量浦箱,也就是說我們函數(shù)括弧“{} ”中定義的變量(但不包括static 聲明的變量吸耿,static 意味著在數(shù)據(jù)段中存放變量)。除此以外酷窥,在函數(shù)被調(diào)用時咽安,其參數(shù)也會被壓入發(fā)起調(diào)用的進(jìn)程棧中,并且待到調(diào)用結(jié)束后蓬推,函數(shù)的返回值也會被存放回棧中妆棒。由于棧的先進(jìn)先出特點,所以棧特別方便用來保存/ 恢復(fù)調(diào)用現(xiàn)場沸伏。從這個意義上講糕珊,我們可以把堆棧看成一個寄存毅糟、交換臨時數(shù)據(jù)的內(nèi)存區(qū)红选。

分布如下圖所示:


注意:
圖中間在棧和堆之間,有一個共享內(nèi)存的映射的區(qū)域姆另。這個就是共享內(nèi)存存放的地方喇肋。一般共享內(nèi)存的默認(rèn)大小是32M。

image.png

一個查看程序 data段迹辐,bss段蝶防,代碼段的命令 : size命令

對于如下的兩個程序 :


p1.c
p2.c

區(qū)別在于 arr[10] 一個有初始化,一個沒有初始化明吩。使用size命令查看一下:


text data bss 分別表示的是 代碼段间学,data段,bss段的大小

小結(jié) :
1、經(jīng)過初始化的全局變量和靜態(tài)變量保存在數(shù)據(jù)段中低葫。
2详羡、未經(jīng)初始化的全局變量和靜態(tài)變量保存在BSS段。
3氮采、函數(shù)內(nèi)部聲明的局部變量保存在堆棧段中殷绍。
4、const修飾的全局變量保存在文本段中鹊漠,const修飾的局部變量保存在堆棧段中。
5茶行、字符串常量保存在文本段中躯概。

read more:
http://blog.sina.com.cn/s/blog_53fab15a01019lbq.html


另外一個問題

上面說到了一個進(jìn)程的進(jìn)程空間分布,下面的寫一個進(jìn)程下多個線程的空間分布畔师。

一個進(jìn)程下的多個線程的資源是共享的娶靡,只有 棧,棧指針和寄存器 是獨立的看锉。這樣可以保證多個線程去訪問函數(shù)的時候姿锭,不會出現(xiàn)數(shù)據(jù)不一致的問題。

  • 每個線程獨立的棧有多大伯铣?
    默認(rèn)的線程棧是8m呻此。

  • 如何修改默認(rèn)的線程棧的大小腔寡?

typedef struct __pthread_attr_s 
{ 
  int __detachstate; //分離狀態(tài) 
  int __schedpolicy;//調(diào)度策略 
  struct __sched_param __schedparam; 
  int __inheritsched; 
  int __scope;//線程優(yōu)先級的有效范圍 
  size_t __guardsize;// 
  int __stackaddr_set; 
  void *__stackaddr;//起始地址 
  size_t __stacksize;//表示堆棧的大小
}pthread_attr_t; 


// pthread_attr_t 線程的屬性
// 也就是我們創(chuàng)建線程的第二個參數(shù)
if(pthread_create(&p1,NULL,th1,NULL)!=0){
        cout<<"thread create error"<<endl;
}

可以配合pthread_attr_setstack使用設(shè)置線程棧,由此看來線程棧在所進(jìn)程的堆區(qū)焚鲜,所以線程與其所屬的進(jìn)程共享進(jìn)程的虛擬地址空間.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市放前,隨后出現(xiàn)的幾起案子忿磅,更是在濱河造成了極大的恐慌,老刑警劉巖凭语,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件葱她,死亡現(xiàn)場離奇詭異,居然都是意外死亡似扔,警方通過查閱死者的電腦和手機(jī)吨些,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來虫几,“玉大人锤灿,你說我怎么就攤上這事×玖常” “怎么了但校?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長啡氢。 經(jīng)常有香客問我状囱,道長术裸,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任亭枷,我火速辦了婚禮袭艺,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘叨粘。我一直安慰自己猾编,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布升敲。 她就那樣靜靜地躺著答倡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪驴党。 梳的紋絲不亂的頭發(fā)上瘪撇,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天,我揣著相機(jī)與錄音港庄,去河邊找鬼倔既。 笑死,一個胖子當(dāng)著我的面吹牛鹏氧,可吹牛的內(nèi)容都是我干的渤涌。 我是一名探鬼主播,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼度帮,長吁一口氣:“原來是場噩夢啊……” “哼歼捏!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起笨篷,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤瞳秽,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后率翅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體练俐,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年冕臭,在試婚紗的時候發(fā)現(xiàn)自己被綠了腺晾。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡辜贵,死狀恐怖悯蝉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情托慨,我是刑警寧澤鼻由,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響蕉世,放射性物質(zhì)發(fā)生泄漏蔼紧。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一狠轻、第九天 我趴在偏房一處隱蔽的房頂上張望奸例。 院中可真熱鬧,春花似錦向楼、人聲如沸查吊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽菩貌。三九已至,卻和暖如春重荠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背虚茶。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工戈鲁, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人嘹叫。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓婆殿,卻偏偏與公主長得像,于是被迫代替她去往敵國和親罩扇。 傳聞我的和親對象是個殘疾皇子婆芦,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,592評論 2 353

推薦閱讀更多精彩內(nèi)容