PRB: Evitar errores de "Memoria insuficiente para ejecutar"

Seleccione idioma Seleccione idioma
Id. de artículo: 86230 - Ver los productos a los que se aplica este artículo
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Expandir todo | Contraer todo

Síntomas

Durante el proceso de cargar una aplicación, Microsoft Windows muestra un cuadro de mensaje de error de ejecución de aplicación con el siguiente mensaje:
Memoria insuficiente para ejecutar esta aplicación; cierre uno o más aplicaciones de Windows y vuelva a intentarlo.

Causa

Uno de los motivos que se muestre este mensaje es que el sistema no tiene memoria disponible con una dirección menor que 1 megabyte (MB). Cuando cargue una aplicación en Windows, llama a la API de GlobalDosAlloc() asignar memoria en el espacio de direcciones por debajo de 1 MB para la base de datos de la aplicación tareas. Si la llamada GlobalDosAlloc() falla, Windows muestra el mensaje de error de ejecución de aplicación.

Solución

Utilice como poca memoria por debajo de 1 MB como sea posible.

Más información

Una situación común que conduce a un error de memoria insuficiente, considera una aplicación desarrollada con un modelo de grandes cantidades de memoria que incluye muchos segmentos de datos adicionales o segmentos de datos adicional muy grandes. Cuando Windows carga la aplicación, asigna memoria fijo para contener los segmentos de datos adicionales. En Windows 3.0, estas fija memoria bloques también son página bloqueado, que impide que el Administrador de memoria mover bloques de disco como memoria rellenos.

Se asigna memoria fija desde la parte inferior del montón global, que comienza en la dirección de memoria posible más baja. Si toda la memoria por debajo de 1 MB se rellena con página bloqueado bloques de memoria, Windows no puede mover bloques en bloques de memoria o de intercambio en disco para liberar cualquier memoria. Cuando Windows no puede asignar una tarea de base de datos para una tarea nueva, muestra el cuadro mensaje de error descrito anteriormente. Una aplicación puede determinar si está dirigida por debajo de 1 MB toda la memoria en uso al intentar asignar un bloque pequeño de memoria con la función GlobalDosAlloc. (Windows 3.0 requiere 512 bytes de memoria baja la base de datos de cada aplicación de tareas). Si falla la asignación, Windows no pueda iniciar otro programa. Incluso si la asignación es correcta, el error de otra asignación de memoria requerida por la aplicación puede impedir cargar.

Uno para solucionar este problema consiste en quitar el bloqueo de página de segmentos de datos adicionales de una aplicación. Sin embargo, tener acceso a una rutina de servicio de interrupción de memoria debe página bloqueado para mantener sus datos disponibles en todo momento. Una aplicación puede utilizar los servicios de la biblioteca de dynamic-link auxiliar de herramienta (TOOLHELP.DLL) y algunas funciones de Windows para modificar los indicadores de los segmentos de datos adicionales. Después de modificación, los segmentos de datos son movable y no bloqueado de página.

Utilice las funciones de GlobalFirst() y GlobalNext() proporcionadas por la biblioteca auxiliar de herramienta para recorrer el montón global busca bloques de memoria propiedad de la aplicación. Si un bloque de memoria es bloqueado página (el campo wcPageLock de la estructura de datos GLOBALENTRY no es cero), llame a la función GlobalPageUnlock para cambiar el recuento de bloqueo para el bloque de memoria. Llamar a GlobalRealloc() cambie el bloque de fija de memoria móvil también puede ser deseable.

Para obtener más información sobre la biblioteca auxiliar de herramienta, consulte el capítulo 8 de la "Kit de desarrollo de software de Microsoft Windows: referencia del programador, volumen 1: Introducción A" manual de la versión 3.1.

Otro método para desbloquear los segmentos de datos utiliza las funciones GlobalPageUnlock() y GlobalUnfix(). Para obtener más información sobre esta técnica, vea los artículos siguientes en Microsoft Knowledge Base:
83363Código de ejemplo segmentos de datos adicionales de grandes modelos de desbloqueos

Propiedades

Id. de artículo: 86230 - Última revisión: martes, 04 de febrero de 2014 - Versión: 3.0
La información de este artículo se refiere a:
  • Microsoft Windows Software Development Kit 3.0
  • Microsoft Windows Software Development Kit 3.1
Palabras clave: 
kbnosurvey kbarchive kbmt kb16bitonly kbprb kbprogramming KB86230 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 86230

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com