我认为在定义大数据结构时会有3个参数影响可执行文件的大小,例如数组。 1.定义的范围:全球/本地 2.静态与否 3.初始化与否
例如,A. - 图像大小: 77KB
int main (void) {
/*static*/int array[100000] = {0};
printf("%d", array[100]); return 0;
}
B中。 - 77KB
int main (void) {
static int array[100000] = {0};
printf("%d", array[100]); return 0;
}
℃。 - 467KB
int main (void) {
static int array[100000] = {1};
printf("%d", array[100]); return 0;
}
d。 - 77KB
int main (void) {
/*static*/ int array[100000] = {1};
printf("%d", array[100]); return 0;
}
电子。 - 77KB
static int array[100000] = {0};
int main (void) {
printf("%d", array[100]); return 0;
}
F。 - 467KB
static int array[100000] = {1};
int main (void) {
printf("%d", array[100]); return 0;
}
-G。 - 467KB
/*static*/ int array[100000] = {1};
int main (void) {
printf("%d", array[100]); return 0;
}
小时。 - 77KB
/*static*/ int array[100000] = {0};
int main (void) {
printf("%d", array[100]); return 0;
}
很容易理解为什么本地数组(初始化与否)是77KB,只要它不是静态的。 (案例A和B.) 但是,静态和本地,即使没有初始化仍然是467KB(案例B)。 怎么来的?
关于全球定义: static和un-initialized是77KB(例E)。怎么来的?
我希望你可以下订单并解释幕后发生的事情......