2012-04-02 14 views
5

Tengo un problema en mi proyecto. A veces la ejecución falla con el error "no se puede acceder a una ubicación de lectura/escritura xxxxx". Sé que es un error de corrupción de memoria. Pero, ¿cómo puedo rastrear ese error? Está fallando en la desasignación de memoria de una variable, si comento esa línea está procesando bien. Es decir, la memoria para esta variable ya se ha liberado. Anteriormente funcionaba bien, agregué código recientemente pero no cambié nada relacionado con esto. ¿Cómo puedo verificar la corrupción de memoria por esto?cómo verificar la corrupción de la memoria en C++

+0

¿Qué sistema operativo, compilador e IDE está utilizando? –

+0

¿Qué plataforma? De cualquier manera, busca en Google o busca SO, esta pregunta ha sido solicitada a muerte un millón de veces. –

+0

@Amaravathi Probablemente hay una eliminación doble en su programa. Con solo la descripción, no es posible decir dónde está el problema. Replica el problema a un programa pequeño y publica el código aquí. – Mahesh

Respuesta

0

Con la información dada, tendrá que recorrer todo el código que ha agregado recientemente (si se trata de un problema reciente) y evaluar y verificar cada línea y ver si está pisoteando la memoria. memcopy es un comando que puede causar este tipo de error si está asignando mucho para el tamaño del elemento que está copiando.

Asegúrese de que solo está eliminando sus objetos (punteros) una vez también.

7

Use valgrind si se encuentra en Linux, le mostrará exactamente lo que sucede si se pisa la memoria.

En Windows: see here.

+0

No. Estoy en Windows. usando el editor de VS 2008 – Amaravathi

+1

@Amaravathi Bueno, ¿por qué no lo dijiste en tu pregunta original? Hubiera ayudado en grandes cantidades. – Bojangles

+0

Tener un problema de corrupción de memoria, excepto cuando ejecuto bajo valgrind, entonces nunca segfaults, por supuesto. –

0

Si está utilizando Windows, intente winDbg. Es el mejor y muy poderoso.

Cuestiones relacionadas