
amdrade
(usa Ubuntu)
Enviado em 18/08/2013 - 01:17h
Olá, estava fazendo um script em C e deu *** Error in `./z': double free or corruption (fasttop): 0x0000000000749d10 ***
Alguém poderia me explicar o motivo ?
Usando os métodos:
int strnadd(char **out, size_t size_out, char *in, size_t size_in){
char *p;
if(!*out) {
size_out = 0;
*out = malloc(size_in+1);
if(!*out) {
return -1;
}
} else {
p = realloc(*out, size_out + size_in + 1);
if(!p) {
return -1;
}
*out = p;
}
memcpy( (*out + size_out), in, size_in );
*( *out + size_out + size_in )=0;
return size_out + size_in;
}
int stradd(char **out, size_t size_out, char *in) {
return strnadd(out, size_out, in, strlen(in));
}
Para criar um String dinâmica em um loop
...
while(i<N){
...
if(_nAchou > 0){
_nca++;
sprintf(p, "%d:%d",cadeia,_nAchou); //printf("%s\n", p);
str_size = stradd(&string, str_size, p);
str_size = stradd(&string, str_size, ",");
}
...
}
Ou se alguém tem uma outra forma de concatenar a String no loop.
Obrigado.