gpt4 book ai didi

c - 首先返回比free char值c

转载 作者:行者123 更新时间:2023-11-30 20:10:40 24 4
gpt4 key购买 nike

在此函数中,我需要返回并删除一个 char 值(释放分配的内存)。这个函数有什么问题吗?

char* pqueue_poll(PrioQueue *queue) {
if (queue->root == NULL) {
return "NULL";
}

else {
char* name = (char *) malloc(sizeof(char)*10);
q_elem *temp = queue->root;

name = temp->name;
queue->root = queue->root->next;

return name;

free(temp);
free(&temp->name);
}
}

我首先尝试释放它,然后返回它,但没有结果,我在 valgrind 上遇到了一些错误。我还有一个单独的函数(不删除),它返回我想要返回并在此处删除的值

最佳答案

这是您的代码中的几个主要问题

  • name = temp->name; 只会将 char *name 设置为指向您要返回的字符串。您需要执行memcpy,然后释放内存。
  • return之后的free永远不会被执行

我猜你想要的是

  1. 为返回数据分配内存(或使用静态数组)
  2. 从队列中复制数据
  3. 队列结构中的空闲内存
  4. 返回指针(如果您没有使用静态缓冲区,稍后必须释放该指针)

关于c - 首先返回比free char值c,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43858739/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com