我有一个结构
struct request {
int code;
char *message;
};
Run Code Online (Sandbox Code Playgroud)
我想要正确地自由.
我有以下功能来做到这一点:
void free_request(struct request *req) {
if (req->message != NULL) {
free(req->message);
}
free(req);
req = NULL;
}
Run Code Online (Sandbox Code Playgroud)
问题是,我得到一个"免费():无效的指针" /段错误错误从编译器,当我尝试释放已使用字符串文字创造了一个请求:
struct request *req;
req = malloc(sizeof(struct request));
req->message = "TEST";
free_request(req);
Run Code Online (Sandbox Code Playgroud)
因为我想在不同的地方创建请求结构,一旦使用文字(在客户端)和一次使用我从套接字读取的*字符(在服务器端)我想知道是否有一个函数来确保我不要尝试释放文字,同时仍允许我释放我使用malloc创建的消息.