-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)
尽管您使用指针分配内存并将malloc该内存的地址分配给指针,但您在第二条语句中覆盖了该指针并让它指向字符串文字。注意:使用 时manufacture = "Suzuki";,字符串文字不会复制到您保留的内存块中;你只需让指针指向不同的东西即可。
您的代码实际上正在执行类似的操作free("Suzuki"),这显然是释放以前未“分配”的内容。
写...
char* manufacture = (char*)malloc(15*sizeof(char));
strcpy(manufacture,"Suzuki");
...
free(manufacture);
Run Code Online (Sandbox Code Playgroud)
它应该有效。