J'avais pensé le contraire: à savoir que tout ce qu'on déclare dans la procédure (sauf en Global ou Shared) est libéré dès qu'on sort de la procédure.
Comme quoi, chacun imagine un truc

bon, 2 truc nouveaux appris aujourd'hui. Super

Code : Tout sélectionner
Procedure.i LoadBuffer(nomFichier$)
Protected fic.i
If FileSize(nomFichier$)<1 ; Si le fichier n'existe pas ou fait 0 octet
ProcedureReturn 0
EndIf
fic=ReadFile(#PB_Any,nomFichier$)
If fic=0
ProcedureReturn 0
EndIf
Protected *adresse=AllocateMemory(Lof(fic))
If *adresse=0
ProcedureReturn 0
EndIf
If ReadData(fic,*adresse,Lof(fic))=0
ProcedureReturn 0
EndIf
CloseFile(fic)
ProcedureReturn *adresse
EndProcedure
Oui c'est sûr...Marc56 a écrit :Comme quoi, chacun imagine un truc
donc puisque c'est libérè en fin de programme on s'en occupe pas avant...Shadow a écrit :Pas compris mais FreeMemory() est automatiquement appeler à la fin du programme.Donc on a intérêt à tout de suite écrire un FreeMemory() après un un AllocateMemory() et le "pousser" au fur et à mesure de l'écriture du code (comme on fait pour Procedure/EndProcedure) pour être sur de ne pas oublier de libérer la ram.
Code : Tout sélectionner
Procedure apendicite()
apendice=AllocateMemory(1000000) ;<----- j'ai mis gros car j'ai beaucoup de memoire sur mon pc
If apendice<>0
Debug "j'en remet dans mon apendice"
Else
Debug "plus de memoire disponible pour le programme : memoire morte de l'apendicite"
End
EndIf
; FreeMemory(apendice) ;<------ligne a ajouter pour soigner l'apendicite avant la mort du patient
EndProcedure
Repeat
apendicite()
ForEver