si on utilise la stratégie 'setlength' on alloue facilement à discrétion de la mémoire 'typée' que l'on accroît facilement sans perdre la partie déjà allouée en accroissant le nombre d'élément.
Comment dé-allouer correctement cette mémoire?
J'utilise
sans avoir vraiment vu si cela est OK si ce n'est par sources non certifiées.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SetLength(V,0); V:=nil;
Actuellement dans le doute j'utilise plutôt l'approche suivante qui est un peu + lourde du point de vue de la syntaxe mais pour laquelle je suis sur de déallouer la mémoire.
Par exemple:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 const M=100; var p : pointer; var d : ^double; getmem(p,M*sizeof(double)); ReallocMem( P,newsize); // pour changer dynamiquement la taille et restituer au passage la mémoire si newsize < oldsize d:=p; for i:=0 to M-1 do begin d^:=.... inc(d); end; ... freemem(p); // mémoire désallouée p:=nil; // eventuel ...
Partager