У меня есть структура
struct request {
int code;
char *message;
};
что я хотел бы освободиться должным образом.
У меня есть следующая функция:
void free_request(struct request *req) {
if (req->message != NULL) {
free(req->message);
}
free(req);
req = NULL;
}
Проблема в том, что я получаю ошибку "free(): invalid pointer" /segfault от компилятора, когда я пытаюсь освободить запрос, который был создан с использованием строкового литерала:
struct request *req;
req = malloc(sizeof(struct request));
req->message = "TEST";
free_request(req);
Поскольку я хочу создавать структуры запроса в разных местах, один раз используя литералы (на стороне клиента) и однажды используя * символы, которые я читал из сокета (на стороне сервера), мне было интересно, есть ли функция, чтобы сделать что я не пытаюсь освободить литералы, но позволяю мне освободить сообщение, которое я создал, используя malloc.