下面的代码,按照内存地址大致绘制出你的不同内存区域来
2015-02-01 19:20
197 查看
#include <stdio.h> #include <stdlib.h> #include <malloc.h> int varGlobal1; int varGlobal2; int varGlobal3; int varGlobal4 = 1; int varGlobal5 = 2; int varGlobal6 = 3; const int varGlobalCons1 = 4; const int varGlobalCons2 = 5; const int varGlobalCons3 = 6; static int varGlobalStat1 = 7; static int varGlobalStat2 = 8; static int varGlobalStat3 = 9; void funcTest(int param1, int param2, int param3) { int varLocal1 = 10; int varLocal2 = 11; int varLocal3 = 12; const int varLocalCons1 = 0; const int varLocalCons2 = 0; const int varLocalCons3 = 0; printf("函数内变量地址\n"); printf("varLocal1 = %x, varLocal2 = %x, varLocal3 = %x\n", &varLocal1, &varLocal2, &varLocal3); printf("函数内常量地址\n"); printf("varLocalCons1 = %x, varLocalCons2 = %x, varLocalCons3 = %x\n", &varLocalCons1, &varLocalCons2, &varLocalCons3); printf("函数参数地址\n"); printf("param1 = %x, param2 = %x, param3 = %x\n", ¶m1, ¶m2, ¶m3); } int main() { static int varLocalStat1 = 0; static int varLocalStat2 = 0; static int varLocalStat3 = 0; static int varLocalStat4; static int varLocalStat5; static int varLocalStat6; const int varLocalCons1 = 0; const int varLocalCons2 = 0; const int varLocalCons3 = 0; int varLocal1 = 0; int varLocal2 = 0; int varLocal3 = 0; char * pMalloc1, *pMalloc2, *pMalloc3; pMalloc1 = (char *)malloc(sizeof(char)* 10); pMalloc2 = (char *)malloc(sizeof(char)* 10); pMalloc3 = (char *)malloc(sizeof(char)* 10); funcTest(varLocal1, varGlobal1, varGlobalCons1); printf("main()本地变量地址\n"); printf("varLocal1 = %x, varLocal2 = %x, varLocal3 = %x\n", &varLocal1, &varLocal2, &varLocal3); printf("main()本地常量地址\n"); printf("varLocalCons1 = %x, varLocalCons2 = %x, varLocalCons3 = %x\n", &varLocalCons1, &varLocalCons2, &varLocalCons3); printf("全局变量地址(初始化)\n"); printf("varGlobal4 = %x, varGlobal5 = %x, varGlobal6 = %x\n", &varGlobal4, &varGlobal5, &varGlobal6); printf("全局静态变量地址\n"); printf("varGlobalStat1 = %x, varGlobalStat2 = %x, varGlobalStat3 = %x\n", &varGlobalStat1, &varGlobalStat2, &varGlobalStat3); printf("全局常量地址\n"); printf("varGlobalCons1 = %x, varGlobalCons2 = %x, varGlobalCons3 = %x\n", &varGlobalCons1, &varGlobalCons2, &varGlobalCons3); printf("本地静态变量地址(已初始化)\n"); printf("varLocalStat1 = %x, varLocalStat2 = %x, varLocalStat3 = %x\n", &varLocalStat1, &varLocalStat2, &varLocalStat3); printf("本地静态变量地址(未初始化)\n"); printf("varLocalStat4 = %x, varLocalStat5 = %x, varLocalStat6 = %x\n", &varLocalStat4, &varLocalStat5, &varLocalStat6); printf("全局变量地址(未初始化)\n"); printf("varGlobal1 = %x, varGlobal2 = %x, varGlobal3 = %x\n", &varGlobal1, &varGlobal2, &varGlobal3); printf("在堆上分配的内存地址\n"); printf("pMalloc1 = %x, pMalloc2 = %x, pMalloc3 = %x\n", pMalloc1, pMalloc2, pMalloc3); free(pMalloc1); free(pMalloc2); free(pMalloc3); return 0; }
相关文章推荐
- 下面三句代码有没有错,以inboxing或者unboxing为例,解释一下内存是怎么变化的
- c++ 代码, 下面两段代码编译后文件大小为什么会不同
- 一个数组中只有两个数是不同的,其他数字是成对出现的,下面代码可将该数组中不同的两数字找出并输出
- 浏览器兼容性问题,为什么同一段JavaScript代码,不同浏览器上为什么会产生不同效果,甚至bug?浏览器不就是严格按照JavaScript语法进行的吗?java代码为什么从来没听过有什么兼容问题?
- 可以通过下面的代码看出每个应用程序最高可用内存是多少
- 内存按照接口类型分通常有下面几种
- 按照图片比例定位文字展示区域代码
- 多分类问题中,实现不同分类区域颜色填充的MATLAB代码(demo:Random Forest)
- 一个数组中只有两个数是不同的,其他数字是成对出现的,下面代码可将该数组中不同的两数字找出并输出
- Java代码的内存分配和存储区域
- 从一段代码里看FreeBSD与Linux内存分配的不同
- TGraphicControl(自绘就2步,直接自绘自己,不需要调用VCL框架提供的函数重绘所有子控件,也不需要自己来提供PaintWindow函数让管理框架来调用)与TControl关键属性方法速记(Repaint要求父控件执行详细代码来重绘自己,还是直接要求Invalidate无效后Update刷新父控件,就看透明不透明这个属性,因为计算显示的区域有所不同)
- 共享内存多次写入不同类型的数据测试代码
- 将源目录中的文件按照前缀分发到不同目录中的算法设计及C代码实现
- ecshop 网店系统分类下面按照多属性的方式显示 按照多属性的格式搜索 php代码和演示
- 用windbg根据堆内存地址查找分配内存的代码位置
- 排列平方数 若干不同的数字,排列组合后能产生多少个平方数? 下面的代码解决了这个问题。
- 请根据下面需求,按照数据库设计步骤绘制符合第三范式的E-R图和数据库模型图
- 下面结合代码介绍HashMap与TreeMap按照key和value排序。
- javascript ArrayBuffer类型化数组和视图的操作 个人理解类型化数据就是内存分配区域,不同数据的存储就是视图DataView咯 var buffers = []; var jso