Lo que pasa es que en mi Visual C++6.0 me bota tres veces ese error con Lines diferentes
"Debug assertion failed File: dbgheap.c Line: 47 ..."
cuando trato de liberar con delete() memoria a una de las variables declaradas dinamicamente.
Este es mi codigo que intenta averiguar si es palindromo o no una cadena:
Código:
Y por supuesto cuando comento los dos tambien Funciona pero no seria correcto dejar sin liberar la memoria...#include <stdio.h> #include <iostream.h> #include <string.h> #include <malloc.h> bool palindromo(char*); void main(){ char C[]={"anita lava la tina"}; bool a=palindromo(C); cout<<endl<<a<<endl; } bool palindromo(char* Cade){ int s,c=0,c_sinEsp=0; s=strlen(Cade); char* CopyCade=NULL; char* Cade_sinEsp=NULL; CopyCade=new char[s+1]; Cade_sinEsp=new char[s+1]; CopyCade=Cade; while(c<s){ if(CopyCade[c]!=' '){ strcpy(&Cade_sinEsp[c_sinEsp++],&CopyCade[c]); //cout<<Cade_sinEsp[c_sinEsp-1]<<endl; } c++; } s=strlen(Cade_sinEsp); int m=(s+1)/2,f=s-1; for(int i=0;i<s;i++){ if(Cade_sinEsp[i]!=Cade_sinEsp[f]) return false; else f--; } /********En este caso FUNCIONA // delete(CopyCade); delete(Cade_sinEsp); /*****En este caso NO FUNCIONA delete(CopyCade); delete(Cade_sinEsp); /****En este caso TAMPOCO FUNCIONA delete(CopyCade); // delete(Cade_sinEsp); return true; /***** }
A q se debe este error que me bota tres veces la ventana q me da las opciones de Anular Reintentar y Omitir............ esta bien q deje de liberar la memoria de CopyCade??.... como puedo resolver este problema-.
Gracias por su atencion.......