实例1
1
2
3
4
5
6
7
| #include <stdio.h>
int
main()
{
int a[10240]; //~ 栈上数组,编译后大小为9.0K
return 0;
} |
实例2
1
2
3
4
5
6
7
| #include <stdio.h>
int a[10240] ; //~ 未显式初始化的全局数组,编译后,可执行文件的大小为9.0K
int
main()
{
return 0;
} |
实例3
1
2
3
4
5
6
7
| #include <stdio.h>
int a[10240] = {0}; //~ 显式初始化为0的全局数组,编译后,可执行文件的大小为9.0K
int
main()
{
return 0;
} |
实例4
1
2
3
4
5
6
7
| #include <stdio.h>
int a[10240] = {1}; //~ 显式初始化a[0]为1的全局数组,编译后,可执行文件的大小为49.0K
int
main()
{
return 0;
} |
局部对象是在运行时栈上分配的,编译后不占用磁盘空间。未显式初始化或者初始化为0的全局数组,编译器会做相应的记录,以便在程序装入时分配空间。做显式初始化的全局数组,由于初始化的元素个数及元素值不便记录,编译器便在编译时就分配了空间,因此需要占用磁盘空间。
赞