Quelle est la différence entre ceci:C++: définition de tableau local par rapport à un appel malloc
somefunction() {
...
char *output;
output = (char *) malloc((len * 2) + 1);
...
}
et ceci:
somefunction() {
...
char output[(len * 2) + 1];
...
}
Quand est un plus approprié que l'autre?
merci à tous pour vos réponses. voici un résumé:
- ex. 1 est l'allocation de tas
- ex. 2 est l'allocation pile
- il y a une limitation de la taille de la pile, l'utiliser pour les petites allocations
- vous devez allocation de tas libre, ou il fuira
- l'allocation de la pile n'est pas accessible une fois la fonction sort
- l'allocation du tas est accessible jusqu'à ce que vous libérer (ou l'application se termine)
- VLA ne faites pas partie de la norme C++
corrections bienvenues.
ici est une explication de la différence entre tas vs pile:
What and where are the stack and heap?
Vous devriez consulter votre livre C++. Si vous n'avez pas de livre C++, je vous recommande d'obtenir l'un des textes pour débutants listés dans [Le Guide et la Liste Complète du Livre C++] (http://stackoverflow.com/questions/388242/the-definitive-c-book -guide-and-list). –
En outre, la question dépend entièrement de la définition de 'len'; si ce n'est pas une constante, alors le second exemple de code est C++ mal formé. –
len est un entier et affecté au résultat de strlen dans la fonction. – Gush