c++全局变量是否初始化的区别

时间:2014-10-09 14:03:13   收藏:0   阅读:294

全局变量未初始化:

#include <Windows.h>
int g_buf[1024*1024];
int main()
{
    Sleep(-1);
    return 0;
}

编译后exe大小为47k.

 

全局变量初始化:

#include <Windows.h>
int g_buf[1024*1024]={1};
int main()
{
    Sleep(-1);
    return 0;
}

编译后的exe为4M

原理:全局变量初始化的话, 占据data段,所以exe变大。 如果没有初始化,则只在bss段记录,data段不填充。

执行exe的时候,通过任务管理器查看进程内存大小, 均为4M, 没有延迟加载(windows)

url:

https://github.com/1184893257/simplelinux/blob/master/bss.md

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!