这是代码:任何人都可以解释这个问题我如何在 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)
这里:
s="hello";
Run Code Online (Sandbox Code Playgroud)
不写入"hello"分配的内存。相反,它重新分配s指向"hello"存储的只读位置。您分配的内存malloc已泄漏,并且free(s);无效,因为您无法释放该只读内存。
如果您想复制"hello"到s,请尝试strcpy(s,"hello");。