stop solucion reiniciarse que producido problema necesita management inicia error code causes memory-management operating-system

memory-management - reiniciarse - stop code memory management windows 10 solucion



problemas de asignaciĆ³n de memoria (4)

En un sistema operativo como Windows, donde cada proceso obtiene un espacio de direcciones virtuales de 4 GB (asumiendo 32 bits), no importa la cantidad de RAM que tenga. En tal caso, malloc (2.4GB) seguramente fallará ya que el espacio de direcciones del usuario está limitado a 2GB solamente. Incluso la asignación de 2 GB probablemente fallará ya que el sistema tiene que asignar 2 GB de espacio de direcciones virtuales continuas para malloc. Esta memoria gratuita continua es casi imposible debido a la fragmentación.

Tengo la siguiente pregunta: Tengo RAM de 2.5 GB en mi computadora lo que quiero es si es posible que en caso de asignar memoria total a algún proceso o por ejemplo char * buffer=malloc(2.4GB) , no más proceso (google chrome, juegos de Microsoft en la computadora ... etc) ¿Pueden correr?


La computadora funciona con memoria virtual, esto no tiene relación con un tamaño real de RAM.


Probablemente no. Primero, su sistema operativo tendrá protecciones, es decir, malloc eventualmente se convertirá en una llamada al sistema en su sistema operativo, por lo que fallará en lugar de matarlo todo. En segundo lugar, debido a la memoria virtual, puede tener más memoria asignada que RAM, de modo que incluso si su sistema operativo le permitiera asignar 2.5 gigas, todavía podrá funcionar y ejecutar procesos.


Si bien depende del sistema operativo y el compilador, en Visual C ++ en ventanas de 32 bits, normalmente no podrá malloc más de 512 MB a la vez. Esto controlado por la constante del preprocesador _HEAP_MAXREQ. Para detalles del enfoque que solía trabajar en torno a esta limitación, consulte el siguiente hilo Si va a 64 bits, esto también deja de ser un problema, aunque podría terminar usando mucha más memoria virtual de lo que cabría esperar.