Hola
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:
#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;
/*****
}
Y por supuesto cuando comento los dos tambien Funciona pero no seria correcto dejar sin liberar la memoria...
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.......