Pourquoi une grande longueur variable tableau a une valeur fixe -1, même s'il est affecté au C?

Je suis en train de faire un tableau de taille variable en c.

Le tableau de garde sur le retour comme ayant une valeur de -1.

Ce que je veux faire est de faire un tableau de taille size puis ajoutez progressivement des valeurs. Ce que je fais mal?

int size = 4546548;

UInt32 ar[size];
//soundStructArray[audioFile].audioData = (UInt32 *)malloc(sizeof(UInt32) * totalFramesInFile);
//ar=(UInt32 *)malloc(sizeof(UInt32) * totalFramesInFile);
for (int b = 0; b < size; b++)
{
    UInt32 l = soundStructArray[audioFile].audioDataLeft[b];
    UInt32 r = soundStructArray[audioFile].audioDataRight[b];
    UInt32 t = l+r;
    ar[b] = t;
}
double de stackoverflow.com/questions/448844/variable-sized-arrays-in-c
Le Code a l'air correct, mais la taille est grande. Êtes-vous sûr que votre programme a 18MO de pile à utiliser?
J'ai été confus au sujet de la façon dont beaucoup d'éléments que je veux que mon tableau pour contenir, et la taille réelle.

OriginalL'auteur dubbeat | 2010-11-24