gpt4 book ai didi

c - 为什么用 1 和 0 初始化数组会使可执行文件如此之大?

转载 作者:行者123 更新时间:2023-12-04 12:28:01 24 4
gpt4 key购买 nike

如果我编译以下程序 int array[5000]={0}; int main(){} ,输出文件大小比我做的要小得多int array[5000]={1}; int main(){} , 将第一个元素初始化为 1,其余元素初始化为 0,那么为什么文件大小会有如此大的差异呢?

最佳答案

您的 array是一个静态全局变量。
如果声明为仅用零初始化,则可以将其分配在一个特殊的内存段中,该内存段在进程启动期间创建并用零初始化。
OTOH 如果它被声明为包含任何非零值,它的初始值必须存储在程序的文件中,以便操作系统在内存中准备运行程序时,它可以分配适当的数据段并用定义的数据填充它初始值。
https://en.wikipedia.org/wiki/Data_segment用于 DATA 和 BSS 段。

关于c - 为什么用 1 和 0 初始化数组会使可执行文件如此之大?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69034904/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com