【发布时间】:2020-01-14 14:05:17
【问题描述】:
代码如下: 谁能解释这个问题 如何在 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);
}
【问题讨论】:
-
您正在将
s的指针值重新分配给静态字符串,而不是像您想象的那样将“hello”实际存储到 malloc 的内存中。因此,您正在释放未分配的内存 -
strcpy(s,"hello"); -
char *s=get(6); -
在上面@sshashank124所说的伤口上撒盐,你也在泄漏内存。
-
@P__J__ 如果
N用于任何事情:-)