C语言中的全局变量内存分配和初始化顺序
2012-12-13 18:26
441 查看
内存分配:
对于局部变量而言,内存分配的顺序和代码的顺序是一样的,但全局变量就不一定一样了。
1)一般的编译器,对于初始化的全局变量,碰到之后就知道这是一个定义,会马上分配空间,如
int ib =3;
int ia =4;
那么ia的地址就在ib之后
2)对于没有初始化的全局变量,因为不知道是定义还是声明,所以要在扫描完所有代码之后才能决定,这个时候编译器会读符号表,然后看哪些变量没有分配空间,因为符号表是字母顺序的,所以这些变量的内存分配也是按照字母顺序来的,所以对于
int ib;
int ia;
ia的空间在ib之前
不同源文件间全局变量的初始化顺序:
对于全局变量而言,除了在同一个文件定义的全局对象的初始化 是按照定义次序来进行的之外,其他全局或静态变量之间的初始化次序没有任何保障的。
对于局部变量而言,内存分配的顺序和代码的顺序是一样的,但全局变量就不一定一样了。
1)一般的编译器,对于初始化的全局变量,碰到之后就知道这是一个定义,会马上分配空间,如
int ib =3;
int ia =4;
那么ia的地址就在ib之后
2)对于没有初始化的全局变量,因为不知道是定义还是声明,所以要在扫描完所有代码之后才能决定,这个时候编译器会读符号表,然后看哪些变量没有分配空间,因为符号表是字母顺序的,所以这些变量的内存分配也是按照字母顺序来的,所以对于
int ib;
int ia;
ia的空间在ib之前
不同源文件间全局变量的初始化顺序:
对于全局变量而言,除了在同一个文件定义的全局对象的初始化 是按照定义次序来进行的之外,其他全局或静态变量之间的初始化次序没有任何保障的。
相关文章推荐
- C语言中的全局变量内存分配和初始化顺序
- 关于全局变量内存分配的顺序
- 全局变量,静态全局变量,静态局部变量,类静态成员内存分配与初始化问题
- 内存分配及(静态)全局(局部)变量
- C语言全局变量的初始化和字符串常量
- 程序在的内存中的分配(常量,局部变量,全局变量,程序代码)
- 内存分配方式(动态/静态)的不同对const变量(全局/局部)访问性的影响
- C语言全局变量的初始化和字符串常量
- 内存分配:堆、栈、全局变量/静态变量、代码区
- C语言变量声明内存分配
- 深入探讨C语言中局部变量与全局变量在内存中的存放位置
- C语言中的初始化及内存分配
- 内存分配:堆、栈、全局变量/静态变量、代码区
- windows下变量在内存中的字节存储顺序(c语言)
- C\C++编译器关于变量的内存分配顺序总结
- 程序在的内存中的分配(常量,局部变量,全局变量,程序代码)
- 全局变量的初始化不是按顺序进行的
- 程序在的内存中的分配(常量,局部变量,全局变量,程序代码)
- C\C++编译器关于变量的内存分配顺序总结
- Java变量的声明、内存分配及初始化