C Instanciation de matrice - Pile ou allocation de tas?

Je peux vous garantir que cette question a été posée, mais je n'ai pas été en mesure de trouver par le biais de la recherche; désolé à l'avance pour les éventuels licenciements.

C'est mon (potentiellement mauvais) comprendre que vous ne allouer sur la pile quand vous savez que la taille d'un objet au moment de la compilation. Ainsi, dans le cas de l'initialisation d'un tableau, vous pouvez faire l'une de ces (et cela devrait aller sur la pile):

char charArray[50];

Depuis la taille de ce tableau est connu au moment de la compilation, ce qui devrait avoir aucun problème.

D'autre part, cette (je crois) est également valable code:

char anotherCharArray[someVariable + 50];

Serait-ce aller sur la pile? Je suis sûr que le code de segmentation si vous free (), donc il me fait penser qu'il fait, mais il n'a pas vraiment de sens pour moi. De même, c'est du 100% seule situation où vous devez utiliser free() lorsque les données ont été allouée par malloc?

Merci d'avance pour votre aide.

source d'informationauteur Shookit