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

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

淺析C/C++變量在內存中的分布

2020-01-26 15:52:39
字體:
來源:轉載
供稿:網友

C/C++變量在內存中的分布在筆試時經常考到,雖然簡單,但也容易忘記,因此在這作個總結,以加深印象。

先寫一個測試程序:

復制代碼 代碼如下:

#include <stdio.h> 
#include <malloc.h> 
int g_i = 100; 
int g_j = 200; 
int g_k, g_h; 
int main() 

    const int MAXN = 100; 
    int *p = (int*)malloc(MAXN * sizeof(int)); 
    static int s_i = 5; 
    static int s_j = 10; 
    static int s_k; 
    static int s_h; 
    int i = 5; 
    int j = 10; 
    int k = 20; 
    int f, h; 
    char *pstr1 = "MoreWindows123456789"; 
    char *pstr2 = "MoreWindows123456789"; 
    char *pstr3 = "Hello"; 

     
    printf("堆中數據地址:0x%08x/n", p); 

    putchar('/n'); 
    printf("棧中數據地址(有初值):0x%08x = %d/n", &i, i); 
    printf("棧中數據地址(有初值):0x%08x = %d/n", &j, j); 
    printf("棧中數據地址(有初值):0x%08x = %d/n", &k, k); 
    printf("棧中數據地址(無初值):0x%08x = %d/n", &f, f); 
    printf("棧中數據地址(無初值):0x%08x = %d/n", &h, h); 

    putchar('/n'); 
    printf("靜態數據地址(有初值):0x%08x = %d/n", &s_i, s_i); 
    printf("靜態數據地址(有初值):0x%08x = %d/n", &s_j, s_j); 
    printf("靜態數據地址(無初值):0x%08x = %d/n", &s_k, s_k); 
    printf("靜態數據地址(無初值):0x%08x = %d/n", &s_h, s_h); 

    putchar('/n'); 
    printf("全局數據地址(有初值):0x%08x = %d/n", &g_i, g_i); 
    printf("全局數據地址(有初值):0x%08x = %d/n", &g_j, g_j); 
    printf("全局數據地址(無初值):0x%08x = %d/n", &g_k, g_k); 
    printf("全局數據地址(無初值):0x%08x = %d/n", &g_h, g_h); 

    putchar('/n'); 
    printf("字符串常量數據地址:0x%08x 指向 0x%08x 內容為-%s/n", &pstr1, pstr1, pstr1); 
    printf("字符串常量數據地址:0x%08x 指向 0x%08x 內容為-%s/n", &pstr2, pstr2, pstr2); 
    printf("字符串常量數據地址:0x%08x 指向 0x%08x 內容為-%s/n", &pstr3, pstr3, pstr3); 
    free(p); 
    return 0; 


運行結果(Release版本,XP系統)如下:

可以看出:
1. 變量在內存地址的分布為:堆-棧-代碼區-全局靜態-常量數據
2. 同一區域的各變量按聲明的順序在內存的中依次由低到高分配空間(只有未賦值的全局變量是個例外)
3. 全局變量和靜態變量如果不賦值,默認為0。 棧中的變量如果不賦值,則是一個隨機的數據。
4. 編譯器會認為全局變量和靜態變量是等同的,已初始化的全局變量和靜態變量分配在一起,未初始化的全局變量和靜態變量分配在另一起。

上面程序全在一個主函數中,下面增加函數調用,看看函數的參數和函數中變量會分配在什么地方。

程序如下:

復制代碼 代碼如下:

#include <stdio.h> 
void fun(int i) 

    int j = i; 
    static int s_i = 100; 
    static int s_j; 

    printf("子函數的參數:        0x%p = %d/n", &i, i); 
    printf("子函數 棧中數據地址: 0x%p = %d/n", &j, j); 
    printf("子函數 靜態數據地址(有初值): 0x%p = %d/n", &s_i, s_i); 
    printf("子函數 靜態數據地址(無初值): 0x%p = %d/n", &s_j, s_j); 

int main() 

    int i = 5; 
    static int s_i = 100; 
    static int s_j; 

    printf("主函數 棧中數據地址: 0x%p = %d/n", &i, i); 
    printf("主函數 靜態數據地址(有初值): 0x%p = %d/n", &s_i, s_i); 
    printf("子函數 靜態數據地址(無初值): 0x%p = %d/n", &s_j, s_j); 
    putchar('/n'); 

    fun(i); 
    return 0; 


運行結果如下:

可以看出,主函數中棧的地址都要高于子函數中參數及棧地址,證明了棧的伸展方向是由高地址向低地址擴展的。主函數和子函數中靜態數據的地址也是相鄰的,說明程序會將已初始化的全局變量和靜態變量分配在一起,未初始化的全局變量和靜態變量分配在一起。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91成人免费观看网站| 亚洲欧美精品在线| 日韩理论片久久| 欧美激情18p| 国产日韩在线播放| 欧美日韩电影在线观看| 国外成人在线视频| 久久精品欧美视频| 国产精品夜色7777狼人| 国产成人精品免费久久久久| 成人a在线观看| 国产视频精品免费播放| 51精品国产黑色丝袜高跟鞋| 91精品国产色综合久久不卡98口| 深夜精品寂寞黄网站在线观看| 久久偷看各类女兵18女厕嘘嘘| 日韩国产精品亚洲а∨天堂免| 亚洲japanese制服美女| 欧美成人全部免费| 久久国产精品网站| 久久av资源网站| 国产香蕉一区二区三区在线视频| 日韩av资源在线播放| 久久精品国产欧美亚洲人人爽| 亚洲国产高潮在线观看| 亚洲精品97久久| 97香蕉超级碰碰久久免费的优势| xxx一区二区| 亚洲最大成人免费视频| 亚洲国产天堂久久综合| 亚洲综合av影视| 成人激情春色网| 精品国产欧美一区二区三区成人| 亚洲尤物视频网| 亚洲国产精久久久久久| 亚洲深夜福利在线| 日韩在线观看你懂的| 久久久久久久久久久av| 欧美乱大交做爰xxxⅹ性3| 一本大道亚洲视频| 欧美一区二区三区精品电影| 精品亚洲国产成av人片传媒| 欧美激情综合色| 国产成+人+综合+亚洲欧美丁香花| 久久精品视频99| 国产精品av在线播放| 欧美成人精品一区二区| 黑人巨大精品欧美一区二区一视频| 91色琪琪电影亚洲精品久久| 欧美在线www| 国产精品黄色av| 国产91色在线|| 欧美午夜电影在线| 午夜精品视频在线| 国产免费成人av| 91免费电影网站| 欧美影院久久久| 欧美日韩日本国产| 久久成人免费视频| 成人动漫网站在线观看| 隔壁老王国产在线精品| 久久中文精品视频| 亚洲欧美激情四射在线日| 日韩精品一二三四区| 日韩成人高清在线| 91地址最新发布| 久久久久亚洲精品成人网小说| 国产在线观看一区二区三区| 97久久国产精品| 亚洲成人久久电影| 国产91精品黑色丝袜高跟鞋| 国产精品视频xxx| 日本欧美一级片| 亚洲综合色激情五月| 亚洲精品久久视频| 欧美成人精品xxx| 亚洲色图校园春色| 国内精品中文字幕| 欧美精品videossex性护士| 日韩精品高清在线观看| 欧美激情久久久久久| 国产成人avxxxxx在线看| 国产精品女视频| 在线精品播放av| 国产免费一区二区三区香蕉精| 亚洲免费视频观看| 欧美极品美女视频网站在线观看免费| 欧美成人性色生活仑片| 亚洲国产精品成人一区二区| 欧美亚洲日本黄色| 2018中文字幕一区二区三区| 97超视频免费观看| 国产精品成人在线| 国产视频在线观看一区二区| 久久亚洲电影天堂| 亚洲精品456在线播放狼人| 久久躁日日躁aaaaxxxx| 久久精品国产91精品亚洲| 国产精品69久久| 国产性猛交xxxx免费看久久| 国产精品久久久久久超碰| 中文字幕国产日韩| 欧美片一区二区三区| 红桃视频成人在线观看| 久久久久久国产免费| 亚洲欧美日韩成人| 国内外成人免费激情在线视频网站| 国产精品日韩欧美综合| 久久久av亚洲男天堂| 日韩免费精品视频| 2018国产精品视频| 欧美午夜宅男影院在线观看| 欧美日产国产成人免费图片| 中文字幕久热精品在线视频| 欧美电影在线观看完整版| 国产精品一区二区三| 亚洲免费影视第一页| 91免费看视频.| 午夜精品www| 亚洲人免费视频| 国产精品毛片a∨一区二区三区|国| 亚洲香蕉成视频在线观看| 久久久精品一区二区三区| 欧美在线免费视频| 国产视频精品一区二区三区| 欧美激情乱人伦| 欧美日韩免费在线观看| 午夜精品一区二区三区在线视频| 91免费的视频在线播放| 永久免费看mv网站入口亚洲| 2020欧美日韩在线视频| 亚洲裸体xxxx| 992tv成人免费影院| 国产精品直播网红| 日韩女优在线播放| 亚洲国产精品久久精品怡红院| 久久精品99无色码中文字幕| 欧美专区国产专区| 欧美一级大片视频| 疯狂做受xxxx欧美肥白少妇| 97国产suv精品一区二区62| 欧美成人精品影院| 国产精品专区h在线观看| 国产不卡视频在线| 亚洲视频欧美视频| 中文字幕亚洲欧美日韩高清| 亚洲欧美日韩精品久久奇米色影视| 欧美激情在线播放| 国产三级精品网站| 亚洲欧洲日韩国产| 国产成+人+综合+亚洲欧洲| 亚洲国产成人久久| 插插插亚洲综合网| 日本精品在线视频| 91最新国产视频| 久久69精品久久久久久久电影好| 欧美自拍视频在线观看| 欧美大尺度电影在线观看| 国产一区二区三区三区在线观看| 国产精品久久久久一区二区| 欧美性精品220| 亚洲成人激情视频| 国产亚洲一区精品| 青青a在线精品免费观看|