将大数组声明/初始化为global / static / local

时间:2016-01-17 18:03:59

标签: arrays static global image-size

我认为在定义大数据结构时会有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)。怎么来的?

我希望你可以下订单并解释幕后发生的事情......

0 个答案:

没有答案