Page 2 sur 2
Re: MemorySeek ?
Publié : dim. 19/mars/2017 18:18
par Marc56
@KCC,
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

Re: MemorySeek ?
Publié : dim. 19/mars/2017 18:29
par majikeyric
AllocateMemory() n'alloue pas de variable proprement dite.
C'est ton pointeur qui reçoit l'adresse de la zone mémoire retournée par AllocateMemory() qui est local à la procédure, c'est tout.
J'utilise souvent des procédures qui retournent des pointeurs sur des zones de mémoires allouées dans la proc, c'est très pratique.
exemple une proc qui charge un fichier dans un buffer et retourne un pointeur sur le fichier en mémoire.
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
Re: MemorySeek ?
Publié : dim. 19/mars/2017 18:37
par Kwai chang caine
Marc56 a écrit :Comme quoi, chacun imagine un truc
Oui c'est sûr...
C'est là qu'on se dit que si on avait pas commencé le film par le milieu, tous ces trucs nous paraitraient tellement évident

Quant j'étais jeune, et que l'électronique en était à son balbutiement, mon prof d'atelier elec offrait des cours de microprocesseur.
Ca intéressait personne à l'époque, mais moi je m'étais inscrit....même pas peur

J'en ai fait qu'un seul, jamais j'aurais cru que dans un si petit carré de silicium noir, il se passait autant de choses et en aussi peu de temps

Mon amour de l'électronique a démarré à cette époque, mais j'aurais pas du commencer par Brigitte bardot...Alice sapritch aurait suffit pour mon cerveau d'handicapé...
Du coups j'ai tellement eu honte de moi, que quand j'ai croisé l'ASM avec PB, j'ai eu comme un arrière goût de "revienzi" et plus jamais je me suis posé ce genre de question que tu te poses
J'ai tellement peur que la réponse soit encore plus compliqué que la question !!!!
Re: MemorySeek ?
Publié : dim. 19/mars/2017 22:28
par case
Shadow a écrit :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.
Pas compris mais FreeMemory() est automatiquement appeler à la fin du programme.
donc puisque c'est libérè en fin de programme on s'en occupe pas avant...
cela reviendrais a dire puisqu'en fin de vie tu n'aura plus l’appendicite on ne s'en occupera pas d'ici la.
bref je te laisse tester l'apendicite...
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
Re: MemorySeek ?
Publié : dim. 19/mars/2017 23:15
par Shadow
Lol, ouais c'est sur que vue comme ça...
Re: MemorySeek ?
Publié : lun. 20/mars/2017 20:51
par Ollivier
AllocateMemory() alloue et FreeMemory() libère sans distinction de procédure.
Re: MemorySeek ?
Publié : mar. 21/mars/2017 20:04
par vurvur
Est-il possible de chercher une chaîne n'importe où dans la RAM entière du système (y compris les zones non allouées)?
Re: MemorySeek ?
Publié : mar. 21/mars/2017 21:41
par Shadow
Heu, là tu joue avec quelque chose dangereux !
Mais je suppose que oui mais il faut que tu sache quoi lire !
Imagine qu'a la position: 98656654484 tu est un String
déjà comment tu va la savoir hein ?
Si tu sais quoi lire et a quel position, alors je pense que oui
que se soit alloué par PB ou par un autre programme.
Enfin si j'me plante pas, sinon on va me corriger.
Re: MemorySeek ?
Publié : mer. 22/mars/2017 0:07
par Ollivier
@ChaudEf
Lire la valeur d'une cellule mémoire RAM à une adresse physique précise, n'importe où dans la mémoire est impossible.
On peut lire des artifacts de données périmées.
On peut aussi freezer l'OS, mais dans ce cas, plus de disque dur, plus d'écran graphique.