gpt4 book ai didi

被释放的 C 指针未分配(即使我对它进行了 malloc,这就是该程序所做的全部)

转载 作者:行者123 更新时间:2023-11-30 18:40:13 26 4
gpt4 key购买 nike

我正在我的 Mac 上编写一个 C 程序,我做了一些基本的事情,但我收到了这个错误。我有一个带有 char 指针的结构来保存简短的描述。在我的主类中,我创建了一个指向该结构的指针,然后创建了另一个指向该结构内的 char 指针的指针。当我释放结构中的 char 指针时,我的终端会抛出一些有关已释放但未分配的指针的错误消息。如果我注释掉该行,则错误不会出现,所以我很确定就是该行。我将包含导致这个奇怪问题的代码。

Chair *chair = (Chair*)malloc(sizeof(Chair));
chair->color = (char*)malloc(sizeof(char)*4);
chair->color = "blue";
printf("This chair is %s", chair->color);
free(chair->color);
free(chair);
return 0;

当我搜索这个时,总是出现未分配内存或“双重释放错误”的用户错误。我很确定我使用了 malloc 并且这 6 行中没有明显的问题。

最佳答案

chair->color = (char*)malloc(sizeof(char)*4);
chair->color = "blue";

要存储 4 个字符的字符串,需要 5 个字节。结尾 \0 需要额外 1 个。
另外,要分配字符串,您应该使用 strcpy()

strcpy(chair->color, "blue");

关于被释放的 C 指针未分配(即使我对它进行了 malloc,这就是该程序所做的全部),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26953163/

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