; > et < char *tmp = (void *)malloc(10); >? [C] != entre < char tmp[10] - C++ - Programmation
Marsh Posté le 28-12-2002 à 15:47:09
char tmp[10];
alloué globalement (1) ou dans une fonction, sur la pile (2). durée de vie : jusqu'à la fin du programme (1) / fin de la fonction (2).
char* tmp = malloc
allocation dynamique. durée de vie : jusqu'à ce que tu libères avec free().
Marsh Posté le 28-12-2002 à 15:48:07
Si je dis pas de bêtises, le premier est alloué sur le stack, alors que ce n'est pas forcément le cas du deuxième...
edit: un peu grilled
Marsh Posté le 28-12-2002 à 15:52:15
Merci à vous,
Donc l'allocation dynamique m'a l'air d'avoir moins d'avantages, je me trompe ?
Et si je ne libère pas avec free, je risque quoi lorsque main se termine ?
++
juju
Marsh Posté le 28-12-2002 à 15:54:31
>> Donc l'allocation dynamique m'a l'air d'avoir moins d'avantages, je me trompe ?
au contraire. tu veux lire des données d'un fichier, tu ne connais pas le nombre à l'avance ... si tu déclares un truc statique tu l'as dans l'os. l'alloc dynamique est la plus utilisée. l'alloc statique (sur la stack) sert au variables temporaires (compteurs, pointeurs, etc.). l'alloc globale est à proscrire.
>> Et si je ne libère pas avec free, je risque quoi lorsque main se termine ?
'memory leaks', littéralement fuites de mémoire. à proscrire également. tout ce que tu alloues, tu _dois_ le désallouer.
Marsh Posté le 28-12-2002 à 16:01:17
OK
youdontcare a écrit : >> Donc l'allocation dynamique m'a l'air d'avoir moins d'avantages, je me trompe ? |
Marsh Posté le 28-12-2002 à 15:44:30
Bonjour,
Quelle est la différence entre les 2 (voir sujet du topic) dans l'utilisation ?
Merci,
@+
juju
---------------
Du temps à perdre ? -> http://www.juju-le-barbare.fr.fm