У меня ошибка сегментации при выполнении этой простой программы (это просто облегченная версия, чтобы воспроизвести ошибку).
// gcc main.c -Wall -Wextra -Wpedantic
// ./a.out
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h> // uint32_t
int main(){
char* rest = (char*)malloc(128 * sizeof(char));
char* token= (char*)malloc(128 * sizeof(char));
strcpy(rest,"Something_else");
token = strtok_r(rest, "_", &rest);
printf("%s\n", token);
free(token);
free(rest);
return 0;
}
free
переменной token
не выдает никакой ошибки. free
переменной rest
всегда дает мне ошибку сегментации каждый раз, когда я использую функцию strok_r
. Что здесь происходит? Любое предложение?
Во время компиляции предупреждения не выдаются.
Вопрос
Как правильно переписать этот простой код ?