Bonsoir, je souhaiterais savoir quand on doit allouer de la mémoire a une varaible locale créée dans une fonction que l'on retourne. Doit on seulement allouer pour retourner un pointeur ou on doit aussi allouer pour un banal type de base? Est ce qu'un type de base renvoyé sans avoir été alloué au préalable mais juste déclarer dans la fonction, et retourné, se fera écraser sur la pile ou non ?
Merci bien!
See ya'
kan tu renvoy un valeur, il renvoy un copien donc pas d'alocation de memoire
si tu renvoy un pointeur, il fait allouer de la memoire pour eviter que la valeur ne soit ecrasée.
kan tu renvoy un valeur, il renvoy un copien donc pas d'alocation de memoire
si tu renvoy un pointeur, il fait allouer de la memoire pour eviter que la valeur ne soit ecrasée.
Merci Beaucoup, c'est exactement ce que je voulais savoir !!
Et comment ca se passe pour les tableuax ??
Dans mon bouquin, ils disent que si on veut impérativement retourner un tableau d'une fonction on doit la mettre dans une structure ? Pourquoi donc ? Surtout que la structure devrait être allouée non ? voici ce qu'ils me proposent:
Code :
struct s { int y[20];};
...
struct s f(...){
struct s resultat;
....
return resultat ;
}
Ici, la structure a juste été déclarée dans la fonction et les valeurs de son tableau modifié. Mais pourquoi quand on sortira de la fonction, la structure sera toujours valide et pas perdue ??
Parce qu'il renvoie une copie de ta structure.
Mais c'est assez crade de renvoyer des structures, vaut mieux renvoyer un pointeur vers une structure (allouée dans ta fonction).
Parce qu'il renvoie une copie de ta structure.
Mais c'est assez crade de renvoyer des structures, vaut mieux renvoyer un pointeur vers une structure (allouée dans ta fonction).
Oui oui je sais qu'il faut plutot travailler sur des poiteurs sur structure c'est juste que j'ai recopie l'exemple tel quel du livre. Je ne savais pas que la structre etait recopiee. Meric beaucoup.