Page 1 sur 1

Lorque l'on libère une zone mémoire...

Publié : jeu. 12/mai/2005 21:43
par Dräc
Ma question sera simple :
Pourquoi, lorsque l’on libère une zone mémoire, constate t-on que les valeurs des deux premiers octets changent ?
Je m’attendais à ce que FreeMemory() indique simplement au programme que la zone est à nouveau disponible pour être réutilisée en tout ou partie par un autre processus, mais sans qu'une valeur de cette zone ne soit changée!
Pourquoi certaines valeurs sont-elles amenées a changer ? Quel est l’intérêt?

Idée farfelue : Est-ce une précaution vis à vis des listes chaînées par hasard ?

Code : Tout sélectionner

Structure elmt
  a.l
  b.l
  c.l
  d.l
EndStructure

*List.elmt = AllocateMemory(SizeOf(elmt))
*List\a = 10
*List\b = 11
*List\c = 12
*List\d = 13

Debug *List\a
Debug *List\b
Debug *List\c
Debug *List\d

Debug "---------"
FreeMemory(*List)

Debug *List\a
Debug *List\b
Debug *List\c
Debug *List\d

Publié : jeu. 12/mai/2005 22:19
par Oliv
C'est peut-être tout simplement pour signifier que la mémoire est vide :?:

Publié : jeu. 12/mai/2005 22:24
par filperj
C'est peut-être des "repères" pour la gestion de la mémoire, ça signifierai quelquechose du genre " ici il y a tant d'octets libres " ...
:roll: Juste une hypothèse...

Publié : ven. 13/mai/2005 22:53
par Dräc
Je m’attends plutôt à ce que la gestion de la mémoire soit assurée par un gestionnaire de mémoire. C’est à lui de connaître les parties libres et occupées de la mémoire, allouer de la mémoire, etc...
C’est beaucoup plus simple ainsi pour le microprocesseur !