如何修复被释放的指针未分配

-1 c malloc dynamic-memory-allocation

我试图释放为该malloc函数分配的空间,但每次收到此消息时:

“malloc:*** 对象 0x7ffeefbff510 错误:未分配正在释放的指针”

即使我明确地将其分配为malloc().

我已经尝试过发送& manufacture并且只是manufacture。我对整个内存分配非常陌生。

char* manufacture = (char*)malloc(15*sizeof(char));   
manufacture = "Suzuki"; 

free(manufacture);
Run Code Online (Sandbox Code Playgroud)

Ste*_*ner 6

尽管您使用指针分配内存并将malloc该内存的地址分配给指针,但您在第二条语句中覆盖了该指针并让它指向字符串文字。注意:使用 时manufacture = "Suzuki";,字符串文字不会复制到您保留的内存块中;你只需让指针指向不同的东西即可。

您的代码实际上正在执行类似的操作free("Suzuki"),这显然是释放以前未“分配”的内容。

写...

char* manufacture = (char*)malloc(15*sizeof(char));
strcpy(manufacture,"Suzuki");
...
free(manufacture);
Run Code Online (Sandbox Code Playgroud)

它应该有效。