小编Nik*_*las的帖子

如何检查char*是否指向C中的字符串文字

我有一个结构

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创建的消息.

c string free

20
推荐指数
2
解决办法
2558
查看次数

标签 统计

c ×1

free ×1

string ×1