[C] != entre < char tmp[10]; > et < char *tmp = (void *)malloc(10); >?

; > et < char *tmp = (void *)malloc(10); >? [C] != entre < char tmp[10] - C++ - Programmation

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
Reply

Marsh Posté le 28-12-2002 à 15:44:30   

Reply

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().

Reply

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 [:jofission]


Message édité par antp le 28-12-2002 à 15:48:49

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

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


---------------
Du temps à perdre ? -> http://www.juju-le-barbare.fr.fm
Reply

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.

Reply

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 ?
 
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.


---------------
Du temps à perdre ? -> http://www.juju-le-barbare.fr.fm
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed