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。