代码之家  ›  专栏  ›  技术社区  ›  Tryer

对未初始化的全局变量对可执行文件大小的影响

  •  0
  • Tryer  · 技术社区  · 6 年前

    highly voted previous answer 高投票率的评论说:

    考虑有许多长度为4096字节的未初始化缓冲区。会的 您希望所有这些4k缓冲区都有助于

    我正在ubuntu上将以下两个文件构建为可执行文件:

    int sum(int *a, int n);
    
    int array[2] = {1,2};
    
    int abc;//Comment in case (a) Uncomment in case (b) and (c)
    int def;//Comment in case (a) and (b) Uncomment in case (c)
    
    int main(){
        int val = sum(array, 2);
        return val;
    }
    

    总和c

    int sum(int *a, int n){
        int i, s = 0;
        for(i = 0; i < n; i++)
            s += a[i];
        return s;
    }
    

    以下命令用于创建可执行文件

    $gcc -Og -o prog main.c sum.c
    

    有三种情况:

    (a) 没有未初始化的全局变量。可执行文件的大小为8648字节。

    (b) 具有未初始化的全局变量 abc

    (c) 具有未初始化的全局变量 abc公司 def . 可执行文件的大小为8704。

    0 回复  |  直到 6 年前