2010-07-21 5 views
0

j'ai la question suivante j'ai RAM 2.5 GB dans mon ordinateur ce que je veux est s'il est possible que dans le cas d'allouer totalement la mémoire à un processus ou par exemple char * buffer=malloc(2.4GB), plus de processus (google chrome, jeux microsoft dans l'ordinateur .. etc) peut fonctionner?problèmes d'allocation de mémoire

+1

Vous devez verrouiller la mémoire pour empêcher la pagination d'échanger le fichier - http://stackoverflow.com/questions/1039017/can-i-tell-windows-not-to-swap-out-a-particular-processes- Mémoire – StuartLC

Répondre

0

Dans un système d'exploitation tel que Windows, où chaque processus dispose d'un espace d'adressage virtuel de 4 Go (en supposant un système d'exploitation 32 bits), la quantité de RAM que vous possédez n'a pas d'importance. Dans un tel cas, malloc (2,4 Go) échouera sûrement car l'espace d'adresse de l'utilisateur est limité à 2 Go seulement. Même l'allocation de 2 Go probablement échouer car le système doit allouer 2 Go d'espace d'adresse virtuelle continuos pour malloc. Cette mémoire libre continue est presque impossible à cause de la fragmentation.

0

L'ordinateur fonctionne avec de la mémoire virtuelle, cela n'a aucun rapport avec une taille réelle de RAM.

1

Probablement pas. Premièrement, votre système d'exploitation aura des protections, c'est-à-dire que malloc finira par devenir un appel système dans votre système d'exploitation, de sorte qu'il échouera au lieu de tout tuer. Deuxièmement, à cause de la mémoire virtuelle, vous pouvez avoir plus de mémoire allouée que de mémoire RAM, de sorte que même si votre système d'exploitation vous laisse allouer 2,5 Go, il sera toujours capable de fonctionner et d'exécuter des processus.

1

Bien que cela dépende du système d'exploitation et du compilateur, sur Visual C++ sous des fenêtres de 32 bits, vous ne pourrez généralement pas faire plus de 512 Mo de malloc à la fois. Ceci est contrôlé par la constante du préprocesseur _HEAP_MAXREQ. Pour les détails de l'approche que j'ai utilisée pour contourner cette limitation, voir le suivant thread Si vous allez à 64 bits, cela cesse également d'être un problème, même si vous pourriez finir par utiliser beaucoup plus de mémoire virtuelle que vous attendez.

Questions connexes