全局变量未初始化:
#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
时间: 2024-10-11 17:47:53