Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/10/2008, 22:06
eling
 
Fecha de Ingreso: junio-2007
Mensajes: 11
Antigüedad: 16 años, 10 meses
Puntos: 0
Ayuda con Error en C++ "Debug assertion failed File: dbgheap.c Line: ..."

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.......