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

首頁 > 編程 > C > 正文

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

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

在書面測試中經常考慮C/C++變量內存中的分布,雖然很簡單,但很容易忘記,本文是武林技術頻道小編帶來的淺析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;?
}?


運行結果如下:

?

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

以上就是關于淺析C/C++變量在內存中的分布,你學會了嗎?如果你還想了解更多的專業程序知識,建議你來武林技術頻道進行學習吧!

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

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲欧美日本伦理| 91伊人影院在线播放| 欧美床上激情在线观看| 日韩av网站导航| 98精品国产高清在线xxxx天堂| 欧美性生活大片免费观看网址| 91精品在线看| 欧美日韩综合视频网址| 日韩欧美精品免费在线| 国语自产偷拍精品视频偷| 亚洲色图狂野欧美| 精品自拍视频在线观看| 国产精品久久久久久网站| 97国产精品久久| 欧美精品videosex性欧美| 91精品免费看| 精品无人区太爽高潮在线播放| 精品国产乱码久久久久久虫虫漫画| 久久中国妇女中文字幕| 日本欧美一二三区| 亚洲字幕在线观看| 中文字幕亚洲欧美日韩高清| 欧美激情精品久久久久久大尺度| 97精品国产97久久久久久| 久久精品国产亚洲7777| 亚洲欧美另类在线观看| 国产视频精品免费播放| 日韩女优在线播放| 亚洲女人被黑人巨大进入| 日韩av综合网| 精品福利一区二区| 国产精品入口夜色视频大尺度| 日本道色综合久久影院| 亚洲精品久久久一区二区三区| 欧美成人免费全部观看天天性色| 国产精品日韩一区| 亚洲第一网中文字幕| 欧洲成人免费视频| 欧美在线欧美在线| 国产一区二区日韩| 欧美日韩一区二区三区在线免费观看| 91成人免费观看网站| 成人免费网视频| 成人a在线观看| 欧美一区深夜视频| 亚洲精品国产精品久久清纯直播| 亚洲经典中文字幕| 亚洲精品自拍偷拍| 一区二区三区久久精品| 一区二区三区视频观看| 成人a免费视频| 九九九热精品免费视频观看网站| 国产激情久久久久| 国产激情999| 国外色69视频在线观看| 九九热最新视频//这里只有精品| 国产精品久久婷婷六月丁香| 少妇激情综合网| 日韩精品高清在线| 欧美性猛交视频| 亚洲天堂男人的天堂| 日本视频久久久| 伊人伊人伊人久久| 国产一区在线播放| 国产精品女人久久久久久| 久久精品国产久精国产一老狼| 色在人av网站天堂精品| 精品国产一区二区三区久久狼黑人| 亚洲成人网在线| 亚洲精品电影网| 91黑丝在线观看| 夜夜嗨av一区二区三区四区| 国产精品福利无圣光在线一区| 久久久久久久久久国产精品| 日韩人在线观看| 久久久久久亚洲精品中文字幕| 亚洲欧美日韩高清| 中文字幕av日韩| 欧美成人午夜激情| 亚洲欧美视频在线| 国内精品久久久久久久| 成人激情视频免费在线| 国产日韩精品在线播放| 欧美理论在线观看| 国产日韩在线看片| 一区二区欧美亚洲| 成人午夜一级二级三级| 亚洲一区二区三区成人在线视频精品| 亚洲精品98久久久久久中文字幕| 欧美在线视频网站| 欧美体内谢she精2性欧美| 日韩女优在线播放| 亚洲一区二区久久久久久久| 亚洲视频欧洲视频| 奇米成人av国产一区二区三区| 亚洲欧美在线磁力| 国产主播在线一区| 5566成人精品视频免费| 日韩一区二区精品视频| 亚洲第一区中文99精品| 国产精品99蜜臀久久不卡二区| 精品国产福利在线| 亚洲精品一区中文| 久久精品99国产精品酒店日本| 5566日本婷婷色中文字幕97| 色哟哟入口国产精品| 懂色aⅴ精品一区二区三区蜜月| 国产精品9999| 久久国产精品电影| 亚洲在线免费视频| 亚洲美女喷白浆| 日韩欧美在线看| 国产人妖伪娘一区91| 亚洲国产精品人久久电影| 久久久久久综合网天天| 国产精品观看在线亚洲人成网| 中文字幕日韩av| 欧美另类高清videos| 国产精品自拍小视频| 亚洲精品视频中文字幕| 国产成人av在线| 4438全国亚洲精品在线观看视频| 国产精品午夜视频| 亚洲字幕一区二区| 日韩一区二区三区xxxx| 日韩极品精品视频免费观看| 国产亚洲成av人片在线观看桃| 亚洲国产婷婷香蕉久久久久久| 欧美性资源免费| 97在线免费视频| 亚洲自拍偷拍福利| 久久九九国产精品怡红院| 国产精品视频内| 青青久久av北条麻妃黑人| 国产福利视频一区| 精品无码久久久久久国产| 久操成人在线视频| 人人爽久久涩噜噜噜网站| 亚洲男人天堂久| wwwwwwww亚洲| 国产成人亚洲精品| 三级精品视频久久久久| 亚洲a一级视频| 欧美电影免费观看大全| 欧美日韩亚洲一区二区| 久久精品99久久香蕉国产色戒| 精品视频—区二区三区免费| 在线观看日韩视频| 51精品国产黑色丝袜高跟鞋| 91久热免费在线视频| 色在人av网站天堂精品| 国产精品麻豆va在线播放| 久久久久久久国产精品视频| 亚洲第一福利网站| 日韩欧美一区视频| 欧美成年人视频网站欧美| 日韩精品在线观看网站| 成人伊人精品色xxxx视频| 欧美三级欧美成人高清www| 欧美日本在线视频中文字字幕| 91国偷自产一区二区三区的观看方式| 国产精品你懂得| 久久久久久伊人| 欧美肥老太性生活视频|