此代碼有時會給我一個分段錯誤,爲什麼會這樣呢?*** glibc檢測到*** realloc():無效的舊大小3
void concatenarAlBuffer(char **destino, char caracter)
{
char matrizAux[1];
matrizAux[0]=caracter;
matrizAux[1]='\0';
(*destino) = realloc((*destino),2+(strlen((*destino))*sizeof(char)));
if ((*destino)==NULL)
{
perror("Error al reservar memoria\n");
exit(-1);
}
strcat((*destino),matrizAux);
}
順便說一句,沒有必要在棧上使用臨時緩衝區來添加NUL char;你可以簡單地用'realloc()'來增加'* destino'後''strncat(* destino,&caracter,1);''。而且,我個人不會在之前使用調用'strlen()'的'strcat()',因爲我覺得這會浪費CPU,但有人可能會爭辯說代碼更具可讀性。 – user2719058
你如何使用'concatenarAlBuffer'?當你的程序崩潰時,你傳遞了什麼論點? – zubergu