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
; 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.