gpt4 book ai didi

c - ** 检测到 glibc *** free() : invalid pointer: 0x0000000000400b2c

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

考虑以下代码:

int main()
{
char* s = (char*) malloc(sizeof(char)*10);
s="hello";
free(s);
}

执行此程序时出现错误:

** glibc detected *** free(): invalid pointer: 0x0000000000400b2c

我对这个错误的研究表明它可能是由于没有通过malloc() 分配足够的内存空间引起的。但是程序已经调用了 malloc(),产生了足够 10 个 char 的空间。

最佳答案

s="hello";

您正在为 s 分配另一个地址,分配给静态分配的内存。释放它是不正确的。此外,由于您这样做,您基本上是在泄漏您在此处分配的内存:

char* s = (char*) malloc(sizeof(char)*10);

尝试:

int main()
{
static const size_t kBufferSize = 10;
char* s = (char*) malloc(sizeof(char) * kBufferSize);
strncpy(s,"hello", kBufferSize); // better than strcpy, you are protecting
// yourself from a buffer overflow
free(s);
}

关于c - ** 检测到 glibc *** free() : invalid pointer: 0x0000000000400b2c ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7357577/

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