Si * get_ii() renvoyait de la mémoire, plutôt que de stocker de la mémoire, ce problème serait-il éliminé?résistance du pointeur
01 int *get_ii()
02 {
03 int ii; // Local stack variable
04 ii = 2;
05 return ⅈ
06 }
07 main()
08 {
09 int *ii;
10 ii = get_ii(); // After this call the stack is given up by the routine
11 // get_ii() and its values are no longer safe.
12
13 ... Do stuff
14 .. ii may be corrupt by this point.
15 }
Source - http://www.yolinux.com/TUTORIALS/C++MemoryCorruptionAndMemoryLeaks.html
grâce
Même problème avec le renvoi d'une référence, la durée de vie d'un objet automatique se termine avec la portée. Dans la plupart des cas, renvoyez simplement une valeur à la place.(Ne pas * pré-optimiser et dire "oh, mais alors je vais copier un gros objet donc je ne devrais pas faire ça! Je vais le prendre par référence en tant que paramètre ou retourner un pointeur vers une valeur allouée dynamiquement Cependant, ne le faites pas.) – GManNickG