我有一个结构
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);
因为我想在不同的地方创建请求结构,一次使用文字(在客户端)和一次使用我从套接字读取的 *chars(在服务器端)我想知道是否有一个函数来确保我不要试图释放文字,同时仍然允许我释放我使用 malloc 创建的消息。