int main(int argc, char **argv){
char *str = argv[1];
size_t len = strlen(str);
char *dst = calloc(len+1, sizeof(char));
int i;
for(i=len-1; i>=0; i--){
memcpy(dst, str+i, 1);
dst++;
}
*(++dst) = '\0';
printf("%s\n", dst);
free(dst);
return 0;
}
проверки ошибок опущено для получения дополнительной читаемости
Я не понимаю, почему я получил Segfault с этим сообщением: «GLibC свободный(): недопустимый указатель:»
Я пытаюсь написать небольшую программу, которая обращает строку с помощью указателей, но:
1) последний printf ничего не печатает;
2) я получил Segfaultсегментации при освобождении указателя при движении задним ходом строки в C
Вы меняете значение 'dst'. Вам нужно освободить начало буфера, который вы выделили. – Joe