memoria maquina aumentar c++ memory

c++ - maquina - Cómo aumentar la memoria máxima asignada en la pila/montón



aumentar memoria java (5)

  • ¿Cómo se puede aumentar la memoria máxima asignada en la pila / montón para un programa en C ++?

  • ¿Incrementar la RAM de su computadora aumentará automáticamente la memoria de pila / montón de un programa de computadora?


El tamaño de almacenamiento dinámico de un proceso generalmente está limitado por la memoria máxima que el proceso puede asignar. El montón no necesita ser contiguo (a menos que esté haciendo algo como malloc (1000000000)) para que el montón pueda usar la mayor parte del espacio de direcciones disponible.

En Windows, el tamaño máximo del proceso varía según un par de factores.

Usando Windows de 32 bits, un proceso de 32 bits puede asignar de manera predeterminada 2 GB. Si Windows se inicia con el modificador / 3GB y el proceso se compila con el indicador del vinculador "Habilitar direcciones grandes", el proceso puede asignar 3 GB.

Al usar Windows de 64 bits, un proceso de 32 bits por defecto puede asignar 2 GB. Si el proceso está vinculado con "Habilitar direcciones grandes", entonces Windows de 64 bits permite que un proceso de 32 bits asigne 4 GB.

Un proceso de 64 bits (en Windows de 64 bits) puede asignar algo así como 16,000 GB.


Estaba teniendo algún problema de memoria con el tamaño de reserva de pila y pila predeterminado de 1 MB. Pero cuando configuro las propiedades anteriores a 2 MB (2000000), funciona bien.

Para establecer estas propiedades en el entorno de desarrollo de Visual Studio, siga los pasos a continuación.

  • Abra el cuadro de diálogo Páginas de propiedades del proyecto.
  • Haga clic en la carpeta del enlazador.
  • Haga clic en la página de propiedades del sistema.
  • Modificar el Heap Reserve Size y el Stack Reserve Size .

Puede especificar el tamaño de pila y el tamaño de pila reservados con las opciones de enlace / Heap y / Stack en Visual Studio. Para más detalles, consulte estos artículos de MSDN:

  1. Asignación de montón
  2. Asignación de pila

Segunda edición: veo por tu comentario que trabajas en Windows, por lo que mi respuesta de Unix a continuación no sería muy útil para ti. Pero vea Cómo determinar el espacio de pila con Visual Studio y el tamaño máximo de pila de C / C ++ del programa .

El tamaño de pila es a menudo limitado en Linux. El comando ulimit -s dará el valor actual, en Kbytes. Puede cambiar el valor predeterminado en (generalmente) el archivo /etc/security/limits.conf.

También puede, dependiendo de los privilegios, cambiarlo en función del proceso utilizando setrlimit() . Vea, por ejemplo, mi respuesta al fallo de segmentación: la asignación de pila en un programa C en Ubuntu cuando está en búfer> 4M .

Para pila , ver, por ejemplo, limitación de tamaño de pila en C. Pero no creo que puedas aumentar o disminuir el tamaño máximo.


En Visual C ++ puedes usar la directiva #pragma . Por ejemplo:

#pragma comment(linker, "/STACK:2000000") #pragma comment(linker, "/HEAP:2000000")