Page 1 sur 1

Problème avec MemoryStatus()

Publié : mar. 08/juin/2021 8:59
par GallyHC
Bonjour,

J'ai viviblement un problème avec MemoryStatus() et je me demande si je suis le seul ou si il y a un truc que je n'ai as compris. Je m'explique, pour la mémoire virtuelle, je n'ai pas la même chose que ce soit en x32 et x64.

Code : Tout sélectionner

Debug MemoryStatus(#PB_System_TotalVirtual)
Debug MemoryStatus(#PB_System_FreeVirtual)

Code : Tout sélectionner

 X32
; 2147352576      en gros 2Go
; 2075566080      en gros 2Go

Code : Tout sélectionner

 X32
; 140737488224256    en gros 140Go
; 140733069586432    en gros 140Go
Avez-vous la même chose ou, vraiment y a un truc que je n'ai pas compris ?

Bien cordialement,
GallyHC

Re: Problème avec MemoryStatus()

Publié : mar. 08/juin/2021 10:10
par MLD
salut Gally
Windows en 64 bits et PB en 32 s. Je trouve ceci
2147352576
2075459584

Re: Problème avec MemoryStatus()

Publié : mar. 08/juin/2021 12:09
par Ar-S
Salut
testé avec PB 5.73 et PB 5.62. Dans les 2 cas.

En compilant en x64 :
140737488224256
140733068574720

En compilant en x86
2147352576
2075521024

Re: Problème avec MemoryStatus()

Publié : mar. 08/juin/2021 12:53
par GallyHC
Bonjour,

Merci a vous deux, bon déjà je ne suis pas le seul ^^ (1/2).

Cordialement,
GallyHC

Re: Problème avec MemoryStatus()

Publié : mar. 08/juin/2021 18:45
par Guillot
windows 10 famille 64bit - PB 5.73 x64

140737488224256
140733069217792

Re: Problème avec MemoryStatus()

Publié : jeu. 10/juin/2021 16:36
par GallyHC
Merci pour ce retour

Re: Problème avec MemoryStatus()

Publié : jeu. 10/juin/2021 17:07
par Micoute
140737488224256
140733069549568

Re: Problème avec MemoryStatus()

Publié : mer. 22/sept./2021 13:39
par Naheulf
Je ne vois pas ou est le problème avec les valeurs sus-mentionnées.

En 32 bits le processeur ne peut adresser que 2^32 adresses mémoires. Ce qui correspond à 4 Giga binaire d’adresses mémoires. Avec une granularité de 1 octet ça donne exactement 4 Gio de mémoire.
<insérez votre nom ici> a écrit :Mais d’où vient la différence entre les 4 Gio théoriques que et les « en gros » 2 Gio observés ?
Si vous convertissez la valeur de la mémoire virtuelle totale en valeur hexadécimale vous trouverez $7FFE0000. Pourquoi une telle valeur ? En fait il y a deux raisons. La première est que Windows se réserve la moitié supérieure de l’espace mémoire virtuel (les adresses dont le premier bit est à « 1 »). La seconde est que l'équivalent d'un bloc de 65536 adresses (oui 2^16) est dédié aux espaces réservés et aux différentes adresses des périphériques installés sur l'ordinateur.

Donc pour récapituler 2147352576 = $7FFE0000 = (2^32)/2-2^16 = $100000000 / 2 - $10000
<insérez votre nom ici> a écrit :Ok pour la mémoire virtuelle totale, mais qu'en est-il de la mémoire virtuelle libre ? Pourquoi une valeur aussi grande alors que j'ai pleins de programmes qui tournent sur l'ordinateur ?
En fait, en mode de compatibilité 32 bits, chaque processus à sa propre mémoire virtuelle isolée de celle des autres. Par conséquent, la mémoire virtuelle non libre correspond aux blocs de mémoire virtuelle non réservés par le programme PureBasic.