Pregunta

_CrtDumpMemoryLeaks(); si no lo saben, es una función que vuelca todas las pérdidas de memoria en un programa. Minas actualmente pantallas que tengo una pérdida de memoria 3.632.062 bytes (que no está siendo cancela la asignación).

Me preguntaba: ¿Hay alguna manera de hacer que Visual C ++ Express a romperse cuando se ha asignado una cierta cantidad de bytes? De esa manera podría romperse cuando se han asignado 3632062 bytes, a continuación, leer el seguimiento de la pila para ver donde se asignaron.

Este es actualmente el único método que se me ocurre para la localización donde la memoria se asigna para que pueda solucionarlo. He estado buscando mi código mucho, pero no puedo encontrar en cualquier lugar donde iba a necesitar para asignar 3632062 bytes (ya que la única carga de archivos que es 2767136 bytes ..) aunque estoy seguro de que la fuga está relacionado con el archivo que he' m operativo en.

¿Alguna idea para encontrar el origen de la pérdida de memoria? Estoy usando nativo C ++, Visual C ++ 2010

¿Fue útil?

Solución

Se puede hacer esto utilizando _CrtSetAllocHook para rastrear el uso total de memoria.

UMDH le dará una lista de bloques asignados en todos los montones. Esto podría ser lo que quiera, desde que se fracturó en golpear un umbral alloc total dado no le dirá donde todos los bloques se asignaron.

Otros consejos

he utilizado previamente esta href="http://www.gamedev.net/community/forums/topic.asp?topic_id=482850" memoria sencilla fuga detector con buen éxito para encontrar fugas de memoria.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top