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 .

Code : Tout sélectionner

Debug SizeOf(liste)
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!