精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

聊聊C語言的內(nèi)存分配

開發(fā) 后端
在標(biāo)準(zhǔn)C語言中,編譯出來的可執(zhí)行程序分為代碼區(qū)(text)、數(shù)據(jù)區(qū)(data)和未初始化數(shù)據(jù)區(qū)(bss)3個(gè)部分。

[[440714]]

1.ANSI C

在ANSI C中數(shù)據(jù)類型包括:整形,浮點(diǎn)型,指針和聚合型(如數(shù)組和結(jié)構(gòu)等)

整形:

字符,短整型,整型和長整型,他們都分別有有符號(singed)和無符號(unsingned)

取值范圍:

沒有帶signed或者unsigned,默認(rèn)signed

長整型至少應(yīng)該和整型一樣長,而整型至少應(yīng)該和短整型一樣長

在32位環(huán)境中,各種數(shù)據(jù)類型的長度一般如下:

2ARM C

具體我們以IAR為編譯器,版本7.2

注意:

在32位ARM中,字是32位,半字是16位,字節(jié)是8位

可以看到以下關(guān)于整型的數(shù)據(jù)類型

下面使用typedef重新定義數(shù)據(jù)類型,沒有使用到long,因?yàn)槎际?2位的有一個(gè)int就夠了

  1. typedef unsigned  char       uint8;    //!< 無符號8位整型變量  
  2. typedef signed    char       int8;     //!< 有符號8位整型變量   
  3. typedef unsigned  short      uint16;   //!<無符號16位整型變量  
  4. typedef signed    short      int16;    //!< 有符號16位整型變量  
  5. typedef unsigned  int        uint32;   //!< 無符號32位整型變量  
  6. typedef signed    int        int32;    //!<有符號32位整型變量  
  7. typedef float                fp32;     //!< 單精度浮點(diǎn)數(shù)(32位長度)  
  8. typedef double               fp64;     //!< 雙精度浮點(diǎn)數(shù)(64位長度) 

3C語言內(nèi)存分配方法

在標(biāo)準(zhǔn)C語言中,編譯出來的可執(zhí)行程序分為代碼區(qū)(text)、數(shù)據(jù)區(qū)(data)和未初始化數(shù)據(jù)區(qū)(bss)3個(gè)部分。如下代碼

  1. #include <stdlib.h> 
  2. int a = 0;    //a在全局已初始化數(shù)據(jù)區(qū)  
  3. char *p1;    //p1在BSS區(qū)(未初始化全局變量)  
  4. void main()  
  5.     int b; //b在棧區(qū) 
  6.     int c; //C為全局(靜態(tài))數(shù)據(jù),存在于已初始化數(shù)據(jù)區(qū) 
  7.     char s[] = "abc"; //s為數(shù)組變量,存儲在棧區(qū), 
  8.     char *p2,*p3;  //p2、p3在棧區(qū) 
  9.     p2 = (char *)malloc(10);//分配得來的10個(gè)字節(jié)的區(qū)域在堆區(qū) 
  10.     p3 = (char *)malloc(20);//分配得來的20個(gè)字節(jié)的區(qū)域在堆區(qū) 
  11.     free(p2); 
  12.     free(p3); 

使用linux編譯之后得到的可執(zhí)行文件如下

可以看到代碼區(qū)(text)、數(shù)據(jù)區(qū)(data)和未初始化數(shù)據(jù)區(qū)(bss)。

代碼段(text):存放代碼的地方。只能訪問,不能修改,代碼段就是程序中的可執(zhí)行部分,直觀理解代碼段就是函數(shù)堆疊組成的。

數(shù)據(jù)段(data):全局變量和靜態(tài)局部變量存放的地方。也被稱為數(shù)據(jù)區(qū)、靜態(tài)數(shù)據(jù)區(qū)、靜態(tài)區(qū):數(shù)據(jù)段就是程序中的數(shù)據(jù),直觀理解就是C語言程序中的全局變量。注意是全局變量或靜態(tài)局部變量,局部變量不算。

未初始化數(shù)據(jù)區(qū)(bss):bss段的特點(diǎn)就是被初始化為0,bss段本質(zhì)上也是屬于數(shù)據(jù)段。

那么問題來了,為什么要區(qū)分data段和bss段呢?

以下面代碼為例,a.c和b.c的差異只是有沒有給arr數(shù)組賦值。

可以看到a.out的bss段大,b.out的data段大。但是b.out的文件大小明顯比a.out的大很多。

那么就可以簡單理解為,data段會增大可執(zhí)行文件的大小,而bss段不會。

這里我說下自己的理解,我并沒有找到資料驗(yàn)證:

data段是全局變量,但是需要初始化值,上面我的例子是全部初始全部為1,但也可能是1024*1024個(gè)不同的數(shù)據(jù),而這些數(shù)據(jù)需要保存起來,表現(xiàn)出來也就是需要保存在可執(zhí)行文件中。

bss段也是全局變量,但不需要初始化值,只需要保存一下這個(gè)全部變量的保存的數(shù)據(jù)類型和大小即可。即使它的數(shù)組容量是1024*1024,也不會占用很多可執(zhí)行文件的大小。

這里再說明一個(gè)問題:如果一個(gè)全部變量初始化為0,那么它也是bss段,不是data段,即使你代碼中把它初始化為0了。這點(diǎn)大家可以自行驗(yàn)證。

關(guān)于數(shù)據(jù)段,也就是data段,也會分為RO data(只讀數(shù)據(jù)段)和RW data(讀寫數(shù)據(jù)段)。

從字面意思就可以區(qū)分他們的意思,不同的是:

只讀數(shù)據(jù)段:程序使用的一些不會被更改的數(shù)據(jù),使用這些數(shù)據(jù)的方式類似查表式的操作,由于這些變量不需要更改,因此只需要放置在只讀存儲器中即可。

讀寫數(shù)據(jù)段:程序中是可以被更改的數(shù)據(jù),且初始化過的,所以需要防止在RAM中,且初始化的內(nèi)容放在存儲器中(表現(xiàn)為放入可執(zhí)行文件中)。

這樣又可以分區(qū)只讀區(qū)和讀寫區(qū)域,如下所所示(當(dāng)然bss段和下文的堆棧也是讀寫區(qū))

上面說到“編譯出來的可執(zhí)行程序分為代碼區(qū)(text)、數(shù)據(jù)區(qū)(data)和未初始化數(shù)據(jù)區(qū)(bss)3個(gè)部分”,那運(yùn)行中就會多出來一些區(qū)域,這就是我們茶說的堆棧,注意堆棧是兩個(gè)區(qū)域堆和棧。

棧:局部變量、函數(shù)一般在棧空間中。運(yùn)行時(shí)自動(dòng)分配&自動(dòng)回收:棧是自動(dòng)管理的,程序員不需要手工干預(yù)。方便簡單。是提前分配好的連續(xù)的地址空間。棧的增長方向是向下的,即向著內(nèi)存地址減小的方向。

堆:堆內(nèi)存管理者總量很大的操作系統(tǒng)內(nèi)存塊,各進(jìn)程可以按需申請使用,使用完釋放。程序手動(dòng)申請&釋放:手工意思是需要寫代碼去申請malloc和釋放free。可以是不連續(xù)的地址空間。堆的增長方向是向上的,即向著內(nèi)存地址增加的方向。

下面是簡單的演示代碼

  1. #include <stdlib.h> 
  2. #include <stdio.h> 
  3.  
  4. int bss_var;                                //未初始化全局?jǐn)?shù)據(jù)存儲在BSS區(qū) 
  5. int data_var=42;                            //初始化全局?jǐn)?shù)據(jù)存儲在數(shù)據(jù)區(qū) 
  6.  
  7. int main(int argc,char *argv[]) 
  8.   char *p ,*b; 
  9.   printf("Adr bss_var:0x%x\n",&bss_var); 
  10.   printf("Adr data_var:0x%x\n",&data_var); 
  11.   printf("the %s is at adr:0x%x\n","main",&main); 
  12.   p=(char *)alloca(32);              //從棧中分配空間 
  13.   if(p!=NULL
  14.   { 
  15.     printf("the p start is at adr:0x%x\n",p); 
  16.     printf("the p end is at adr:0x%x\n",p+31); 
  17.   } 
  18.   b=(char *)malloc(32*sizeof(char));   //從堆中分配空間 
  19.   if(b!=NULL
  20.   { 
  21.     printf("the b start is at adr:0x%x\n",b); 
  22.     printf("the b end is at adr:0x%x\n",b+31); 
  23.   } 
  24.   free(b);         //釋放申請的空間,以避免內(nèi)存泄漏 
  25.   while(1); 

運(yùn)行結(jié)果如下

內(nèi)存分配示意圖如下

 

責(zé)任編輯:武曉燕 來源: 知曉編程
相關(guān)推薦

2022-01-13 10:30:21

C語言內(nèi)存動(dòng)態(tài)

2022-11-30 08:19:15

內(nèi)存分配Go逃逸分析

2021-12-22 06:56:07

STM32C語言內(nèi)存

2022-01-07 13:50:55

語言內(nèi)存代碼

2011-07-15 01:10:13

C++內(nèi)存分配

2021-01-06 09:47:51

內(nèi)存Go語言

2010-02-04 14:58:06

C++內(nèi)存分配

2015-07-08 10:51:27

Objective-CRuntime

2022-02-11 09:31:23

IPV4IP地址IANA

2025-08-05 09:24:30

2022-12-12 08:42:06

Java對象棧內(nèi)存

2021-02-28 13:22:54

Java內(nèi)存代碼

2021-08-10 19:15:17

語言編程應(yīng)用

2021-08-16 06:56:21

Slice數(shù)組類型內(nèi)存

2020-03-11 13:44:20

編程語言PythonJava

2021-01-07 07:53:10

JavaScript內(nèi)存管理

2020-10-19 09:34:04

C語言內(nèi)存錯(cuò)誤編程語言

2013-08-05 15:44:36

C語言基礎(chǔ)

2010-09-25 15:40:52

配置JVM內(nèi)存

2018-02-08 14:57:22

對象內(nèi)存分配
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

草莓视频成人appios| 香蕉久久一区二区三区| 久久精品国内一区二区三区水蜜桃| 欧美色综合网站| 亚洲欧洲精品在线观看| 国产深喉视频一区二区| 欧美三级网页| 亚洲欧美制服第一页| 手机av在线网| 欧美一级鲁丝片| 国产精品久久久一区麻豆最新章节| 51精品国产人成在线观看| 日韩av男人天堂| 日本久久黄色| 精品国产乱码久久久久久久久| 久草青青在线观看| 黄色成年人视频在线观看| 成人精品鲁一区一区二区| 日韩美女免费视频| 青草草在线视频| 欧美一站二站| 亚洲精品久久久久久下一站| 日本在线播放一区二区| 成人直播视频| 亚洲精品成人精品456| 欧美另类视频在线| 亚洲成a人片77777精品| 蜜桃视频在线一区| 欧美亚洲伦理www| 人妻久久一区二区| 波多野结衣一区| 日韩精品视频在线播放| 无套内谢丰满少妇中文字幕| 欧美三级网址| 亚洲丶国产丶欧美一区二区三区| 一本一生久久a久久精品综合蜜| 五月激情婷婷网| 国产成人午夜精品5599| 成人精品aaaa网站| 在线观看中文字幕码| 日韩一区欧美二区| 97超碰色婷婷| 日韩熟女精品一区二区三区| 国产精品二区影院| 美女精品久久久| 97在线观看免费高| 五月开心六月丁香综合色啪| 最近中文字幕2019免费| 九九九视频在线观看| 精品av一区二区| 国产午夜一区二区| 国产jjizz一区二区三区视频| 在线日韩网站| 亚洲另类图片色| 国产熟妇搡bbbb搡bbbb| 色婷婷狠狠五月综合天色拍| 亚洲精品国产综合久久| 影音先锋黄色资源| 香蕉视频一区二区三区| 亚洲欧美日韩视频一区| 99久久久无码国产精品性| 岳的好大精品一区二区三区| 亚洲男人第一网站| 黄色正能量网站| 久久黄色影视| 亚洲大胆人体视频| 91av免费观看| 果冻天美麻豆一区二区国产| 精品黑人一区二区三区久久| 国产成人精品一区二区三区在线观看 | 男女激情视频一区| 国产不卡视频在线| 国产手机在线视频| 日韩精品一二区| 国产成人精品a视频一区www| caoporn国产| 久久精品系列| 国产成人久久久精品一区| 日韩在线播放中文字幕| 欧美亚洲一区二区三区| 日本aⅴ大伊香蕉精品视频| 91video| 久久裸体视频| 国产精品久久久久77777| 无码视频在线观看| 国产一区二区按摩在线观看| 亚洲一区制服诱惑| 精品人妻一区二区三区浪潮在线| 国产乱子伦视频一区二区三区| 91久久极品少妇xxxxⅹ软件| 黄频在线免费观看| 91日韩一区二区三区| 欧洲一区二区日韩在线视频观看免费| 国外av在线| 国产精品国产三级国产普通话三级| 相泽南亚洲一区二区在线播放| 国产一区二区影视| 亚洲婷婷国产精品电影人久久| 青青草免费在线视频观看| 四虎影院观看视频在线观看 | 亚洲成人精品久久久| 艳妇乳肉豪妇荡乳xxx| 亚洲午夜久久| www.xxxx精品| 国产无套在线观看| 可以看av的网站久久看| 成人免费午夜电影| 性插视频在线观看| 综合中文字幕亚洲| 人人干视频在线| 日本高清不卡一区二区三区视频| 欧美日韩一区在线观看| 亚洲精品无码久久久久久久| 国产精品毛片久久久| 按摩亚洲人久久| 国产成人无码精品| 久久 天天综合| 九色视频成人porny| 亚洲精品承认| 黄色成人av网| 在线视频一二区| 欧美三级自拍| 久久亚洲精品一区| 国产专区第一页| 久久99国产精品尤物| 欧美日韩视频在线一区二区观看视频| 国产在线高潮| 在线视频观看一区| 无码人妻精品一区二区三| 第一会所sis001亚洲| 久久久久久国产免费| 岛国av中文字幕| 国产传媒久久文化传媒| 亚洲高清视频一区| 在线免费三级电影网站| 678五月天丁香亚洲综合网| 色婷婷免费视频| 午夜国产精品视频免费体验区| 国产精品91视频| 少妇精品视频一区二区 | 欧美老肥妇做.爰bbww| 丰满大乳奶做爰ⅹxx视频| 亚洲网色网站| 国产精品午夜视频| 西西人体44www大胆无码| 亚洲人123区| www.久久久精品| 国产免费播放一区二区| 国产91精品不卡视频| 亚洲国产精品久久久久久久| 中文字幕制服丝袜成人av| 日韩视频第二页| 久久狠狠久久| 高清一区二区三区日本久| a级片在线播放| 亚洲欧美日韩在线不卡| 一级黄色香蕉视频| 亚洲丝袜美腿一区| 欧美一级bbbbb性bbbb喷潮片| 亚洲精品一区二区三区四区| 日本在线精品| 日韩欧美在线一区二区三区| 超碰人人人人人人人| 久久一区国产| 欧美色欧美亚洲另类七区| 操人在线观看| 亚洲国产精品久久久久秋霞蜜臀 | wwwwww国产| a级高清视频欧美日韩| 91视频 -- 69xx| 欧美三级电影在线| 庆余年2免费日韩剧观看大牛| 无码国精品一区二区免费蜜桃| 亚洲成人免费在线| 日韩少妇一区二区| 国产亚洲精品自拍| 久久久婷婷一区二区三区不卡| 久草免费在线| 日韩欧美黄色影院| 久久福利免费视频| www.欧美色图| 欧美黄色免费影院| 欧美最新另类人妖| 国产精品一二区| 青青影院在线观看| 日韩一区二区三区免费看| 欧美极品视频在线观看| 暴力调教一区二区三区| 日韩a∨精品日韩在线观看| 日韩成人午夜| 午夜精品久久久久久久男人的天堂 | 欧美中文字幕| 欧美二级三级| 国产精品一区免费在线| 久久久久久这里只有精品| 亚洲AV成人无码一二三区在线| 疯狂欧美牲乱大交777| 国产免费一区二区三区网站免费| 蜜臀av一区二区在线免费观看| 在线看无码的免费网站| 91夜夜蜜桃臀一区二区三区| 欧美在线国产精品| 日本视频不卡| 亚洲第一综合天堂另类专| 午夜婷婷在线观看| 亚洲欧洲韩国日本视频| 欧产日产国产精品98| 三级在线观看一区二区| 亚洲自拍三区| 欧美日韩国产一区二区三区不卡| 99久久免费国| 日韩中文影院| 久久久免费在线观看| 高清国产福利在线观看| 日韩欧美一区在线观看| 在线精品免费视| 亚洲美女区一区| 波多野在线播放| 国产激情一区二区三区| 日本精品久久久久中文字幕| 中文av一区| 欧美日韩一区二区三区免费| 99久久999| 欧美综合激情网| 在线观看av免费| 亚洲新声在线观看| 国产欧美日韩成人| 欧美在线观看视频在线| 国产真实的和子乱拍在线观看| 国产欧美日韩三区| 国产精品无码一区二区三| 国产又黄又大久久| 久久午夜夜伦鲁鲁一区二区| 国内精品久久久久久久影视蜜臀| 日韩午夜视频在线观看| 国内精品国产成人国产三级粉色| 91在线看网站| 伊人久久大香伊蕉在人线观看热v 伊人久久大香线蕉综合影院首页 伊人久久大香 | 精品国产乱码久久久久久图片 | 91精品国产色综合久久| 中文字幕免费观看| 亚洲大尺度视频在线观看| 欧美片一区二区| 中文字幕一区二区三中文字幕| 玖玖爱在线观看| 99久久久国产精品| 日本wwwwwww| 国产精品一区在线观看乱码| 免费一级特黄录像| 久久精品综合| 国产精品一区二区免费在线观看| 91精品99| 91网站在线观看免费| 亚洲a在线视频| 在线成人性视频| 欧美第十八页| 亚洲欧美日韩精品久久久| 欧美码中文字幕在线| 欧美日韩精品久久久免费观看| 红杏成人性视频免费看| 97超级在线观看免费高清完整版电视剧| 亚洲网站三级| 91精品中国老女人| 国产精品视频一区二区三区| 成人国产精品久久久| 免费日韩成人| 亚洲a一级视频| 欧美另类中文字幕| 国产精品亚洲аv天堂网| 国产一区二区三区亚洲综合| 亚洲精品免费一区二区三区| 午夜不卡一区| 91久久精品一区二区别| 成午夜精品一区二区三区软件| 亚洲xxxx在线| 久久狠狠久久| 乱色588欧美| 欧美电影免费| 水蜜桃在线免费观看| 韩国在线一区| 久久国产亚洲精品无码| 男人的天堂亚洲| 欧美大尺度做爰床戏| 日韩精彩视频在线观看| 免费国产成人av| 美女视频网站黄色亚洲| 亚洲三级在线观看视频| 国产精品99久久久久久宅男| 精人妻一区二区三区| 95精品视频在线| 久久久久亚洲av成人无码电影 | 精品人妻伦九区久久aaa片| 亚洲精品国产一区二区精华液| 国产91在线播放九色| 亚欧色一区w666天堂| 特级西西444www大精品视频免费看| 欧美日韩综合视频网址| 亚洲高清视频免费观看| 69久久99精品久久久久婷婷| 好吊视频一区二区三区| 亚洲精品一区av在线播放| aaa在线观看| 久久免费精品视频| 成人网ww555视频免费看| 91香蕉亚洲精品| 亚洲肉体裸体xxxx137| 伊人久久av导航| 99热免费精品| 手机av在线网| 成人午夜伦理影院| 蜜桃av.com| 欧美日韩亚洲成人| 国产又大又黑又粗| 国产视频综合在线| 成人欧美在线| 国产v综合ⅴ日韩v欧美大片| 国产精品亚洲欧美一级在线| 日韩在线三区| 亚洲国产免费| www.xxx亚洲| 成人毛片老司机大片| 欧美激情视频二区| 五月天视频一区| 中文字幕第三页| 日韩视频在线永久播放| 三级视频在线| 欧美日韩国产成人高清视频| 成人午夜视屏| 国产精品一区在线观看| 欧美丰满老妇| 欧美a在线视频| 成人成人成人在线视频| 青青青视频在线播放| 欧美色videos| 亚洲欧美激情另类| 久久久成人精品| 91精品美女| 六月婷婷久久| 美女尤物久久精品| 日韩aaaaa| 亚洲狠狠爱一区二区三区| 91久久国语露脸精品国产高跟| 亚洲男人的天堂在线| 波多野结衣视频一区二区| 国产精品乱子乱xxxx| 激情综合久久| 好吊操视频这里只有精品| 亚洲免费看黄网站| 国产乱淫av片免费| 国产亚洲欧美视频| av在线不卡精品| 欧美亚洲国产免费| 国产精品综合| 久久午夜夜伦鲁鲁片| 久久亚洲精品爱爱| 欧美日韩国产色| 国产又粗又猛又爽又黄91| 国产精品传媒入口麻豆| 久久精品国产成人av| 亚洲国产中文字幕久久网| 国产原创视频在线观看| 亚洲一区二区三区久久| 99久久精品费精品国产| 天天干天天玩天天操| 国产精品九色蝌蚪自拍| a片在线免费观看| 正在播放日韩欧美一页| 99在线国产| 欧美三级黄美女| 18深夜在线观看免费视频| 亚洲免费在线看| 国产成人a人亚洲精品无码| 亚洲香蕉av在线一区二区三区| 亚洲综合在线电影| 水蜜桃亚洲精品| 久热成人在线视频| 国产成人免费在线观看视频| 欧美日韩一级黄| 国产大学生校花援交在线播放| 91精品久久久久久久久久久久久 | 黄在线免费看| 成人伊人精品色xxxx视频| 亚洲色图二区| 在线中文字日产幕| 欧美视频第一页| yiren22综合网成人| 国产精品久久久亚洲| 欧美91视频| 日韩aaaaa| 欧美无砖专区一中文字| 精品黄色免费中文电影在线播放| 95av在线视频| 性欧美长视频| 午夜激情福利电影| 欧美精品一区二区三区在线| 亚洲欧洲日本韩国| 久久av秘一区二区三区| 99国产精品久久久| 在线免费看91| 欧美精品久久久久久久久|