Hola, soy nuevo en este foro, me gustaría saber cual es el motivo por el cual sale este maldito error.. :D
A que se debe el malloc corruption. El doble free yo sé que es tratar de liberar espacio no reservado, pero este no sé.
Estoy haciendo una aplicacion, que de lee comandos de un shell,
recibo un char *cmdline, y un int *argc y retorno un char ** argv.
char **getArgv(char *cmdline, int *argc){
____char **argv = NULL;
____char *arg = NULL;
____int arg_ini = 0;
____int arg_fin = -1;
____int arg_indx = 0;
____int offset = 0;
____while( arg_ini = encontrarIni(cmdline, arg_fin + 1), arg_ini >= 0 ) {
________offset = getCmdArg(cmdline + arg_ini);
________arg_fin = arg_ini + offset;
________cmdline[arg_fin - 1] = '\0';
________(*argc)++;
________/*
________ * Si no se ha insertado aun ningun argumento, crear el arreglo de
________ * argumentos. Sino redimensionar para que quepa un elemento mas.
________ */
________if(argv == NULL){
____________/*MUERE EN LA LINEA DE ABAJO =(*/
____________argv = (char**) malloc( sizeof(char*) );
________} else {
____________argv = (char**) realloc(argv, (*argc)*sizeof(char*));
________}
________/*
________* Reservar espacio para el argumento y guardar.
________*/
________arg = argv[arg_indx++] = (char*) malloc( offset*sizeof( char ) );
________bcopy( arg, (cmdline+arg_ini), offset );
____}
____return argv;
}
Alguien sabe que puede ser, y por cierto, ninguna funcion modifica argv, argv tampoco es global y es el primer y unico malloc que hago..
Saludos y gracias