Page 1 sur 1
string et allocation mémoire
Publié : sam. 16/juil./2005 15:15
par nico
Dans ce cas ci, la zone mémoire du string est-elle libérée?
Code : Tout sélectionner
Structure liste
Nom.s
EndStructure
*agenda.liste=AllocateMemory(SizeOf(liste))
*agenda\Nom="Frederic"
adresse=@*agenda\Nom
freememory(*agenda)
debug peeks(adresse)
Publié : sam. 16/juil./2005 15:47
par comtois
Si on met ça au vote , je dis non .
Retourne 4 octets , normal .
Alors je pense que AllocateMemory(4) ne réserve que 4 octets ?
Publié : sam. 16/juil./2005 16:11
par nico
Oui, il n'y a que 4 octets de réservé, mais ce que je me demande; c'est que devient la mémoire allouée pour l'affectation de "Frederic" à la variable nom lorsque je libère la zone mémoire que j'ai créé.
Publié : sam. 16/juil./2005 17:52
par Dr. Dri
c'est une très bonne question. Je viens de comprendre ce dont tu veux parler.
Dri
Publié : sam. 16/juil./2005 19:49
par nico
J'ai l'impression que l'on ne détruit que le pointeur de référence, mais peut-être y a t'il un lien entre les deux.

Publié : sam. 16/juil./2005 20:20
par Dr. Dri
Code : Tout sélectionner
Structure liste
Nom.s
EndStructure
*agenda.liste=AllocateMemory(SizeOf(liste))
*agenda\Nom="Frederic"
adresse=@*agenda\Nom
FreeMemory(*agenda)
Debug *agenda
Debug adresse
Debug FreeMemory(adresse)
Chez moi le dernier debug renvoi 0. Donc à priori il n'y a pas de plage mémoire alouée à "adresse" donc encore à priori, la mémoire est effectivement libérée.
Dri ^^
Publié : sam. 16/juil./2005 20:24
par Dr. Dri
Code : Tout sélectionner
Structure liste
Nom.s
EndStructure
*agenda.liste=AllocateMemory(SizeOf(liste))
*agenda\Nom="Frederic"
adresse=@*agenda\Nom
Debug FreeMemory(adresse)
Debug FreeMemory(*agenda)
Debug *agenda
Debug adresse
Finalement il ne semble pas que cette mémoire soit libérée. Le mieux c'est de faire un *agenda\Nom = #Null$ avant de libérer la mémoire...
Dri
Publié : sam. 16/juil./2005 21:05
par nico
Je pense que tu as raison, bien vu!