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

Sujets variés concernant le développement en PureBasic
Dräc
Messages : 526
Inscription : dim. 29/août/2004 0:45

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

Message 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
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

C'est peut-être tout simplement pour signifier que la mémoire est vide :?:
filperj
Messages : 395
Inscription : jeu. 22/janv./2004 1:13

Message 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...
Le chaos l'emporte toujours sur l'ordre
parcequ'il est mieux organisé.
(Ly Tin Wheedle)
Dräc
Messages : 526
Inscription : dim. 29/août/2004 0:45

Message 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 !
Répondre