首页 > 代码库 > c++全局变量是否初始化的区别

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

全局变量未初始化:

#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

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