我正在Mac上编写一个C程序,我做了一些基本的事情,但是我得到了这个错误。我有一个带有字符指针的结构,用于保存简短描述。在我的主类中,我创建了一个指向此结构的指针,然后为结构内的 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 个字节。 1 个额外的结束