
内存四区
发布日期:2021-05-07 15:25:32
浏览次数:19
分类:精选文章
本文共 2978 字,大约阅读时间需要 9 分钟。
说明:
1、.bss 不占执行文件的空间,只是记录数据所需空间的大小。bss区域的的数据由OS初始化为0;
2、.data 占可执行文件的空间,其内容由程序初始化。
所以,全局变量是否初始化(初始化为非0值),将影响可执行文件的大小。
// 头文件#include#include #include #define HEAP_ZONE_DATA 100// 全局变量--全局区int g_var1 = 0x12; //.data区int g_var2 = 0; //.bss区int g_var3; //.bss区// 全局静态变量--全局区static int g_static_var4 = 0x34; //.data区static int g_static_var5 = 0; //.bss区static int g_static_var6; //.bss区// 全局常量--全局区const int g_const_var7 = 0x56; //常量区const int g_const_var8 = 0;// const int g_const_var9; //常量必须初始化// 打印全局区数据的地址信息void test1_printGlobalZoneAddr(){// 静态局部变量--全局区 static int static_var10 = 0x78; static int static_var11 = 0; static int static_var12 ; printf("----------------------Begin:Global Zone Addr----------------\n"); printf("addr global var inited nonzero-value \t0x%llx\n", &g_var1); printf("addr global var inited zero-value \t0x%llx\n", &g_var2); printf("addr global var none inited \t\t0x%llx\n", &g_var3); printf("addr global static var inited nonzero-value \t0x%llx\n", &g_static_var4); printf("addr global static var inited zero-value \t0x%llx\n", &g_static_var5); printf("addr global static var none inited \t\t0x%llx\n", &g_static_var6); printf("addr global const var inited nonzero-value \t0x%llx\n", &g_const_var7); printf("addr global const var inited zero-value \t0x%llx\n", &g_const_var8); // printf("addr global const var none inited 0x%llx\n", &g_const_var9); printf("addr local static var inited nonzero-value \t0x%llx\n", &static_var10); printf("addr local static var inited zero-value \t0x%llx\n", &static_var11); printf("addr local static var none inited \t\t0x%llx\n", &static_var12); printf("----------------------End:Global Zone Addr----------------\n\n");}// 打印栈区数据的地址信息void test2_printStackZoneAddr(){ // 局部变量--栈区 int i_var13 = 0x9a; int i_var14 = 0; int i_var15 = 0; // const修饰局部变量-- 栈区 const int i_const_var16 = 0x9a; const int i_const_var17 = 0; // const int i_const_var18; //常量必须初始化 printf("----------------------Begin:Stack Zone Addr----------------\n"); printf("addr local var inited nonzero-value \t0x%llx\n", &i_var13); printf("addr local var inited zero-value \t0x%llx\n", &i_var14); printf("addr local var none inited \t0x%llx\n", &i_var15); printf("addr const local var inited nonzero-value \t0x%llx\n", &i_const_var16); printf("addr const local var inited zero-value \t0x%llx\n", &i_const_var17); // printf("addr const local var none inited \t0x%llx\n", &i_const_var18); printf("----------------------End:Stack Zone Addr----------------\n\n");}// 打印堆区数据的地址信息void test3_printHeapZoneAddr(){ char *p1 = (char *)malloc(HEAP_ZONE_DATA); printf("----------------------Begin:Heap Zone Addr----------------\n"); printf("Heap addr \t\t0x%llx\n", p1); printf("----------------------End:Heap Zone Addr----------------\n\n"); free(p1); p1 = NULL;}int main (){ test1_printGlobalZoneAddr(); test2_printStackZoneAddr(); test3_printHeapZoneAddr(); system("pause"); return 0;}
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2025年03月27日 14时58分22秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
无序列表 - 链表
2021-05-09
SQL 查询强化 - 数据准备
2021-05-09
SQL 强化练习 (四)
2021-05-09
SQL 强化练习 (八)
2021-05-09
Excel 拼接为 SQL 并打包 exe
2021-05-09
Pandas数据分析从放弃到入门
2021-05-09
Matplotlib绘制漫威英雄战力图,带你飞起来!
2021-05-09
机器学习是什么
2021-05-09
《小王子》里一些后知后觉的道理
2021-05-09
《自私的基因》总结
2021-05-09
《山海经》总结
2021-05-09
《非暴力沟通》总结
2021-05-09
《你当像鸟飞往你的山》总结
2021-05-09
《我是猫》总结
2021-05-09
《抗糖化书》总结
2021-05-09
apache虚拟主机配置
2021-05-09
光盘作为yum源
2021-05-09
PHP 正则表达式资料
2021-05-09
PHP官方网站及PHP手册
2021-05-09
mcrypt加密以及解密过程
2021-05-09