Tengo problemas con la fragmentación de memoria en mi programa y no puedo asignar bloques de memoria muy grandes después de un tiempo. He leído las publicaciones relacionadas en este foro, principalmente this. Y todavía tengo algunas preguntas.División de montón y administrador de memoria de Windows
He estado utilizando un espacio de memoria profiler para obtener una imagen de la memoria. Escribí un programa de 1 línea que contiene cin >> var; y tomó una foto de la memoria:
alt text http://img22.imageshack.us/img22/6808/memoryk.gif Donde en el arco superior - verde indica el espacio vacío, amarillo asignado, rojo comprometido. Mi pregunta es ¿qué es esa memoria asignada a la derecha? ¿Es la pila para el hilo principal? Esta memoria no va a ser liberada y divide la memoria continua que necesito. En este sencillo programa de 1 línea, la división no es tan mala. Mi programa real tiene más cosas asignadas justo en el medio del espacio de direcciones, y no sé de dónde viene. No estoy asignando ese recuerdo todavía.
¿Cómo puedo tratar de resolver esto? Estaba pensando en cambiar a algo así como nedmalloc o dlmalloc. Sin embargo, eso solo se aplicaría a los objetos que yo mismo asignase explícitamente, mientras que la división mostrada en la imagen no desaparecería. ¿O hay una forma de reemplazar la asignación de CRT con otro administrador de memoria?
Hablando de objetos, ¿hay envoltorios para nedmalloc para C++ entonces puedo usar nuevo y eliminar para asignar objetos?
Thanks.
Microsoft Security Essentials cree que la aplicación "profiler" vinculada en la pregunta original contiene el troyano Win32.Bisar! Rts. –