이 코드는 때때로 세그멘테이션 오류를 발생시킵니다. 왜 이것이 가능합니까?*** 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