• Miércoles 20 de Noviembre de 2024, 18:34

Autor Tema:  Heap de Windows  (Leído 2034 veces)

mruize85

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Heap de Windows
« en: Jueves 9 de Mayo de 2013, 03:01 »
0
Tengo unas cuantas preguntas sobre el "heap" de Windows:

¿Tiene el heapde Windows algún formato (pe. para mantener constancia de la memoria libre y usada) o puede ser usada como un array continuo? Es decir, ¿puedo usar la memoria no reservada entre dos bloques reservados sin riesgo a comprometer la integridad del heap?

¿Las funciones de la API de Windows (kernel32.dll, user32.dll...) usan el heap o su uso es exclusivo del código específico de la aplicación?

Necesito una región de memoria de tamaño variable que se comporte como un array que crece por el final. Solo mi aplicación debe acceder a ella y debe existir una forma simple de aumentar su tamaño. Algo similar al heap de Linux y la llamada al sistema brk.

De entrada me planteo usar el heap por defecto que reserva Windows al cargar mi aplicación, pero si no puede ser utilizado como un array continuo de memoria sin riesgo a comprometer estructuras de datos del API de Windows descartaré esta posibilidad.

En caso de que las respuestas a las dos preguntas anteriores sean favorables a mi propósito, ¿es una práctica recomendable o mejor reservo directamente otra región con Virtualalloc?

Gracias.

rfog

  • Miembro MUY activo
  • ***
  • Mensajes: 166
    • Ver Perfil
Re:Heap de Windows
« Respuesta #1 en: Lunes 8 de Julio de 2013, 20:57 »
0
Hola.

Básicamente no puedes usar el heap libre de Windows, ni el espacio de direcciones no asignado.

Si quieres gestionarte tu mismo la memoria, puedes usar HeapAlloc() y familia, y construirte tu dentro lo que quieras, pero primero tienes que reservar uno o la aplicación te explotará en las manos.
Microsoft Visual C++ MVP - Mi blog sobre programación: http://geeks.ms/blogs/rfog