Pointeurs, gestion de la memoire (Pascal) - Delphi/Pascal - Programmation
Marsh Posté le 08-03-2006 à 11:24:18
Non, sauf si ton compilateur implémente un ramasse miette(normalement pas le cas).
En tout état de cause, l'intruction "ptr2:=ptr1;" ne libère pas et ne doit pas libérer automatiquement ptr2. En effet, considère le code suivant :
var ptr1,ptr2,ptr3:^integer; |
Dans ce cas, la case mèmoire qui contenanit 20 ne doit surtout pas être libéré puisque ptr3 pointe toujours dessus.
Marsh Posté le 08-03-2006 à 11:15:10
Voila un petit programme :
var ptr1,ptr2:^integer;
begin
new(ptr1);
ptr1^:=10
new(ptr2);
ptr2^:=20 {20 est donc mis en memoire à l'adresse pointé par ptr2}
ptr2:=ptr1;
end;
Lorsque l'on fait < ptr2:=ptr1; > ptr2 ne pointe alors plus sur la case memoire qui contenait 20, cette case memoire est-elle libérée de la mémoire (considérée comme libre) ?
Merci de votre réponse !