Programmation d'applications complexes
nico
Messages : 3702 Inscription : ven. 13/févr./2004 0:57
Message
par nico » sam. 16/juil./2005 15:15
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)
comtois
Messages : 5186 Inscription : mer. 21/janv./2004 17:48
Contact :
Message
par comtois » sam. 16/juil./2005 15:47
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 ?
nico
Messages : 3702 Inscription : ven. 13/févr./2004 0:57
Message
par nico » sam. 16/juil./2005 16:11
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éé.
Dr. Dri
Messages : 2527 Inscription : ven. 23/janv./2004 18:10
Message
par Dr. Dri » sam. 16/juil./2005 17:52
c'est une très bonne question. Je viens de comprendre ce dont tu veux parler.
Dri
nico
Messages : 3702 Inscription : ven. 13/févr./2004 0:57
Message
par nico » sam. 16/juil./2005 19:49
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.
Dr. Dri
Messages : 2527 Inscription : ven. 23/janv./2004 18:10
Message
par Dr. Dri » sam. 16/juil./2005 20:20
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 ^^
Dr. Dri
Messages : 2527 Inscription : ven. 23/janv./2004 18:10
Message
par Dr. Dri » sam. 16/juil./2005 20:24
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
nico
Messages : 3702 Inscription : ven. 13/févr./2004 0:57
Message
par nico » sam. 16/juil./2005 21:05
Je pense que tu as raison, bien vu!