关于全局变量分配内存的误解
来源:互联网 发布:中国航天发动机 知乎 编辑:程序博客网 时间:2024/06/04 18:22
以前以为定义一个数组的话,系统会自动为其在heap上分配一块儿新的内存空间。但是在做实验的时候发现原先的理解有误
代码如下:
for(int nIter=0; nIter<3; nIter++){char name[16]={0};printf("a new name point to %p\n");}输出显示,每次分配的都是同一个内存地址,并没有为其分配新的内存空间
深入理解:
进程应该是有一个共同的HEAP,那会不会所有相同名字、相同类型的数组会不会都指向同一片内存空间呢?
于是又做了如下实验:
void newMem(){char name[16]={0};printf("in other function: name point to %p\n", name);}void main(){for(int nIter=0; nIter<3; nIter++){char name[16]={0};printf("a new name point to %p\n");}newMem();}实验结果发现,在不同的函数调用中,相同类型,相同名字的数组指向了不同的内存空间。
按说,每个函数是有自己独立的栈空间的,但是数组属于堆上分配的;如果堆是按照类型跟名字查找的话,也对不上号
。。。
还是有疑惑,找个牛人去解答,先留着
- 关于全局变量分配内存的误解
- 关于全局变量内存分配的顺序
- 关于全局变量指针直接 malloc分配内存的一些问题
- c++ 全局变量的内存分配问题
- 全局变量什么时候分配内存
- 关于内存的分配
- 关于linux的内存分配
- 关于DB2的内存分配
- 关于DB2的内存分配
- 关于JVM的内存分配
- 关于JavaScript的内存分配
- 关于内存的分配问题
- 对于全局变量对应的内存分配问题的追踪
- 关于inline的误解
- 关于Table的误解
- 关于数组的误解
- c程序内存分配及全局变量内存分配
- 关于操作系统内存分配调用的讨论
- 11级_Java_曹建波4.26 集及其实现类&枚举器与数据操作
- 坑爹的cmd
- 安卓第一天
- makefile 之伪目标解析
- jquery动态添加Div
- 关于全局变量分配内存的误解
- wxwindows qt
- win7下jdk安装环境变量配置
- 求关系模式中的候选键(软考,数据库)
- 基于Linux守护进程的分析与实现
- POJ2342 HDU1520 Anniversary party
- 我的PHPFrame
- .net 代码混淆原理性实践
- 改变 Android EditText 的边框