Problème avec MemoryStatus()

Sujets variés concernant le développement en PureBasic
Avatar de l’utilisateur
GallyHC
Messages : 1703
Inscription : lun. 17/déc./2007 12:44

Problème avec MemoryStatus()

Message 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
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
MLD
Messages : 1097
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Problème avec MemoryStatus()

Message par MLD »

salut Gally
Windows en 64 bits et PB en 32 s. Je trouve ceci
2147352576
2075459584
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Problème avec MemoryStatus()

Message 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
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
GallyHC
Messages : 1703
Inscription : lun. 17/déc./2007 12:44

Re: Problème avec MemoryStatus()

Message par GallyHC »

Bonjour,

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

Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
Guillot
Messages : 521
Inscription : jeu. 25/juin/2015 16:18

Re: Problème avec MemoryStatus()

Message par Guillot »

windows 10 famille 64bit - PB 5.73 x64

140737488224256
140733069217792
Avatar de l’utilisateur
GallyHC
Messages : 1703
Inscription : lun. 17/déc./2007 12:44

Re: Problème avec MemoryStatus()

Message par GallyHC »

Merci pour ce retour
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Problème avec MemoryStatus()

Message par Micoute »

140737488224256
140733069549568
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
Naheulf
Messages : 191
Inscription : dim. 10/mars/2013 22:22
Localisation : France

Re: Problème avec MemoryStatus()

Message 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.
Répondre