在 C 中使用 free() 时出现无效(中止)核心转储错误

din*_*abu 1 c free pointers

这是代码:任何人都可以解释这个问题我如何在 main 中释放 s 的内存

char *get(int N)
{
    char *s=malloc(10*sizeof(char));  
    s="hello";  
    return s;  
}
 int main()  
{  
    char *s=get(4);  
    printf(s);  
    free(s);  
}
Run Code Online (Sandbox Code Playgroud)

Bla*_*aze 6

这里:

s="hello";
Run Code Online (Sandbox Code Playgroud)

不写入"hello"分配的内存。相反,它重新分配s指向"hello"存储的只读位置。您分配的内存malloc已泄漏,并且free(s);无效,因为您无法释放该只读内存。

如果您想复制"hello"s,请尝试strcpy(s,"hello");