gpt4 book ai didi

c - 内存被破坏

转载 作者:太空宇宙 更新时间:2023-11-04 00:14:30 25 4
gpt4 key购买 nike

我对这个回复感到困惑。任何人都可以帮我解决这个问题并指出我在哪里犯了错误吗? codepad 的输出是“memory clobbered before allocated block

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void)
{
char *s = (char *)malloc(10 * sizeof(char));
s = "heel";
printf("%s\n",s);
printf("%c\n",s[2]);
printf("%p\n",s);
printf("%d\n",s);
free(s);
return 0;
}

最佳答案

您正在尝试通过以下方式释放常量内存:

free(s); // cannot free constant "heel"

您正在做的是分配一 block 内存并存储其位置 (char *s)。然后,您将用一个字符串常量“heel”(内存泄漏)覆盖该引用,它不能是 freed。要使其按预期运行,您应该将常量字符串复制到您分配的内存中:

strcpy(s, "heel");

这是获取用户输入的示例:

char *input = malloc(sizeof(char) * 16); // enough space for 15 characters + '\0'
fgets(input, 16, stdin);

// do something with input

free(input);

关于c - 内存被破坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8638741/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com