Page 1 sur 1
2 questions concernant la mémoire.
Publié : sam. 21/août/2004 11:17
par Chris
I y a deux ou trois trucs que je ne pige pas bien, au sujet de la mémoire.
1 - Quelle taille de mémoire faut il allouer pour le traitement des nombres flottants.
L'aide dit qu'un "Float" prends 4 octets en mémoire, alors je me demande si il faut faire AllocateMemory(4), ou si je dois mettre une valeur plus grande!
2 - Est-ce qu'il y a un moyen de vérifier qu'on a pas un dépassement de mémoire.
Publié : sam. 21/août/2004 11:27
par Le Soldat Inconnu
question 1 - je dirai oui
question 2 - quand le pc plante

, aucune idée et je crois pas
Publié : sam. 21/août/2004 11:30
par Chris
Le Soldat Inconnu a écrit :question 1 - je dirai oui
Vachement précis, ça! Oui à quoi?
A AllocateMemory(4), ou à une valeur plus grande

Publié : sam. 21/août/2004 11:48
par Le Soldat Inconnu
ah zut, oublié un bout, excuse moi
oui a allocatememory(4)
Publié : sam. 21/août/2004 12:16
par KarLKoX
1 - 4 octets
2 - Il y a des bibliothèque dédiée à cela comme ElectricFence mais pour PureBasic, je ne pense pas.
Il faudra surement jouer à coup d'assembleur.
Publié : sam. 21/août/2004 12:30
par Chris
Il y a bien une fonction dans l'Api, LocalSize_(), mais elle retourne la valeur de mémoire attribuée au départ.
J'ai fait ça:
Code : Tout sélectionner
*B1 = AllocateMemory(1)
PokeF(*B1,12852.5845) : Debug PeekF(*B1)
Debug LocalSize_(*B1)
et LocalSize_() me retourne 1.
Pourtant, je dois pas mal dépasser, là

Publié : sam. 21/août/2004 12:34
par Le Soldat Inconnu
tu alloue 25 go de ram et tu seras tranquille, pas de risque de dépassement
sérieusement, tu ne peux pas tester la taille de ce que tu veux stocker pour savoir si ça rentre avant de l'envoyer dans la mémoire ?
car savoir que ça a dépassé, c'est bien mais c'est trop tard, car tu as écrasé les donnés qui était derrière ton espace (ou alors j'ai rien compris)
donc il faut vérifier avant et pas après
Publié : sam. 21/août/2004 14:12
par Dr. Dri
Code : Tout sélectionner
*ptr = AllocateMemory(taille)
if *ptr=0
debug "tu as atteint la limite de la ram
endif
un float c'est bien 4 octets... quand à la facon dont ils sont codés y'a plein de sites ki en parlent... ils sont bien documentés
Dri