elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  APPCRASH al liberar memoria dinñamica en WIN7.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: APPCRASH al liberar memoria dinñamica en WIN7.  (Leído 2,413 veces)
aerolio_2

Desconectado Desconectado

Mensajes: 6


Ver Perfil
APPCRASH al liberar memoria dinñamica en WIN7.
« en: 30 Octubre 2016, 12:06 pm »

Buenas,

Estoy programando una pequeña aplicación en C++ en la cual, al terminar la ejecución y tratar de liberar la memoria dinámica con delete[], el programa provoca un error de APPCRASH  :-\.

Si el mismo programa lo ejecuto en una máquina virtual en windows XP se ejecuta correctamente, el error solo sucede si lo ejecuto en windows 7  :-(.

He buscado información sobre este error y solo he encontrado que hay que desactivar la prevención de ejecución de datos para el programa que quiera ejecutar, pero eso no me ha funcionado.

¿Qué puedo hacer?  :huh: :huh:


En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: APPCRASH al liberar memoria dinñamica en WIN7.
« Respuesta #1 en: 30 Octubre 2016, 12:18 pm »

Puedes poner el código (si es largo o privado, solo las parte afectadas, es decir, cuando reservas y cuando liberas esa memoria), y así veremos si hay algún problema en él.


En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.935


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: APPCRASH al liberar memoria dinñamica en WIN7.
« Respuesta #2 en: 30 Octubre 2016, 12:21 pm »

Descarga e instala el Application Verifier, selecciona los Basic tests al menos y depura tu programa.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
aerolio_2

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: APPCRASH al liberar memoria dinñamica en WIN7.
« Respuesta #3 en: 30 Octubre 2016, 12:31 pm »

Sí claro que sí, aquí esta como declaro y como intento eliminar la matriz:

char **matriz;
    matriz=new char*[nlineas];
    for (i=1; i<=nlineas; i++) matriz=new char[300];


for (i=1; i<=nlineas; i++) delete [] matriz [ 300 ];

  
   delete[] matriz;



Insisto en lo de que en una máquina virtual con windows XP se ejecuta sin problemas...

PD: vaya creo que ya se cual es el error... delete [] matriz [ 300 ], esta mal, deber´ñia ser delete [] matriz [ i ], ¿verdad?.
« Última modificación: 30 Octubre 2016, 12:35 pm por aerolio_2 » En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: APPCRASH al liberar memoria dinñamica en WIN7.
« Respuesta #4 en: 30 Octubre 2016, 12:36 pm »

No es i=1 hasta i<=nlineas. Los índices en C/C++ van desde 0 hasta longitud - 1.
Por tanto, sería desde i=0 hasta i<nlineas.
En línea

aerolio_2

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: APPCRASH al liberar memoria dinñamica en WIN7.
« Respuesta #5 en: 30 Octubre 2016, 12:44 pm »

Cierto, error de principiante, como así soy..  :-[

Probaré a ver...

Graciass!



Vaya ahora el CRASH se me produce en la segunda línea de liberación:

delete[] matriz;

Me sale el siguiente error: 'HEAP CORRUPTION DETECTED: after Normal block (#128) at 0x00254270 CRT detected that the aplication wrote to memory after end of heap buffer'
« Última modificación: 30 Octubre 2016, 12:57 pm por Eternal Idol » En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: APPCRASH al liberar memoria dinñamica en WIN7.
« Respuesta #6 en: 30 Octubre 2016, 13:04 pm »

Código
  1. char **matriz;
  2. matriz = new char*[nlineas];
  3. for (i=0; i<nlineas; i++)
  4.    matriz[i] = new char[300];
  5.  
  6. for (i=0; i<nlineas; i++)
  7.    delete[] matriz[i]; // matriz[300] -> matriz[i], sinó, intentas eliminar la posición 300, inexistente
  8.  
  9. delete[] matriz;
En línea

aerolio_2

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: APPCRASH al liberar memoria dinñamica en WIN7.
« Respuesta #7 en: 30 Octubre 2016, 13:17 pm »

OK, gracias, ahora ya se ejecutan todos los comandos de liberación de memoria correctamente ¡¡¡¡gracias!!!! :), pero al hacer el return 0; para terminar la aplicación me sale otro error distinto:

'Runtime Check Failure #2 -S'

Supongo que esto ya se deberá a otro motivo, ¿verdad?

PD: parece ser, buscando en google, que puede deberse a un mal uso de los índices de las matrices. Le echaré un repaso al código porque como he estado considerando mal el uso de los índices desde el principio seguro que hay algo que he hecho mal.
« Última modificación: 30 Octubre 2016, 13:25 pm por aerolio_2 » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
liberar memoria ram?
Windows
nova.to 1 3,601 Último mensaje 20 Abril 2011, 16:40 pm
por el-brujo
Cómo liberar memoria RAM
Noticias
wolfbcn 1 1,999 Último mensaje 28 Octubre 2011, 18:37 pm
por [u]nsigned
Bloqueo masivo de win7? [mensaje win7 no es original]
Windows
vvcepheus7 5 4,733 Último mensaje 1 Febrero 2012, 14:13 pm
por vvcepheus7
Liberar memoria
Programación C/C++
Upeksa 3 2,222 Último mensaje 17 Septiembre 2013, 19:23 pm
por Upeksa
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines