L'allocation de la mémoire pour les variables globales et locales

J'ai appris que la mémoire pour les variables globales sont alloués au démarrage du programme alors que la mémoire pour les variables locales sont attribués à chaque appel de fonction est faite.

Cas 1:
Je l'ai déclaré à global tableau d'entiers de taille 63500000 et la mémoire utilisée est de 256 MO
Ideone Lien

include <stdio.h>
int a[63500000];
int main()
{
    printf ("This code requires about 250 MB memory\n");
    return 0;
}

Cas 2:
J'ai déclaré un local tableau d'entiers de taille identique dans main (), et la mémoire utilisée est de 1,6 MO
Ideone lien

#include <stdio.h>
int main()
{
    int a[63500000]= {1,5,0};
    printf ("This code requires only 1.6 MB \n");
    //printf ("%d\n", a[0]);
    return 0;
}

Cas 3:
J'ai déclaré un local tableau d'entiers de taille identique dans une autre fonction et la mémoire utilisée est de 1,6 MO
Ideone Lien

#include <stdio.h>
void f()
{
    int a[63500000];
}

int main()
{
    f();
    return 0;
}

Veuillez expliquer pourquoi il existe une différence de mémoire utilisée ou mon concept de l'allocation de mémoire est le problème ??

Vous le savez, vous devriez poster le code directement dans la réponse au lieu de donner des liens Ideone
Comment avez-vous que c'est la quantité de mémoire les programmes de consommer?
Dans votre tableau d'exemples, vous n'avez pas utiliser la plupart de la matrice, de sorte que le compilateur peut optimiser en toute sécurité.
Monsieur, quand on compile un programme en ideone il indique le temps requis et la mémoire utilisée par le programme.
Merci. Je vois que maintenant.

OriginalL'auteur Snehasish | 2012-08-15