gpt4 book ai didi

c - 为什么我会收到此内存访问错误 'double free or corruption'?

转载 作者:太空狗 更新时间:2023-10-29 17:09:31 26 4
gpt4 key购买 nike

我收到以下类型的错误。我知道这与我不正确地访问内存有关,但我不知 Prop 体是怎么回事。请帮我看看哪里做错了。

*注意我已经简化了我的函数并且变量在做什么并不明显,我只需要知道我是如何错误地实现函数或者我在哪里滥用内存访问。

int my_function(char const *file_name, size_t max)
{

myStruct.pStore = fopen(file_name,"w+"); //pStore is a FILE*
myStruct.max = max;

// fill the with zeros ('0')
int numberOfZeros = max*SIZE;
char zeros[numberOfZeros];

int i=0;
while(i<numberOfZeros) // insert zero's
{
zeros[i]='0';
i++;
}
fwrite(zeros,sizeof(char),numberOfZeros,myStruct.pStore);
fclose(myStruct.pStore);

return EXIT_SUCCESS;

我得到的错误:

*** glibc detected *** /home/.../: double free or corruption (top): 0x0804c008 ***
======= Backtrace: =========
/lib/i386-linux-gnu/libc.so.6(+0x73e42)[0xb7e82e42]
/lib/i386-linux-gnu/libc.so.6(fclose+0x154)[0xb7e72384]
/home/2012/spatar/cs/specs/release[0x80486b0]
/home/2012/spatar/cs/specs/release[0x8048acd]
/home/2012/spatar/cs/specs/release[0x8048af0]
/lib/i386-linux-gnu/libc.so.6(__libc_start_main+0xf3)[0xb7e284d3]
/home/2012/spatar/cs/specs/release[0x80484e1]
======= Memory map: ========
08048000-0804a000 r-xp 00000000 00:3b 2331829 /home/2012/spatar/cs/Aspecs/release
0804a000-0804b000 r--p 00001000 00:3b 2331829 /home/2012/spatar/cs/specs/release
0804b000-0804c000 rw-p 00002000 00:3b 2331829 /home/2012/spatar/cs/specs/release
0804c000-0806d000 rw-p 00000000 00:00 0 [heap]
b7e0e000-b7e0f000 rw-p 00000000 00:00 0
b7e0f000-b7fae000 r-xp 00000000 00:11 5415 /lib/i386-linux-gnu/libc-2.15.so
b7fae000-b7fb0000 r--p 0019f000 00:11 5415 /lib/i386-linux-gnu/libc-2.15.so
b7fb0000-b7fb1000 rw-p 001a1000 00:11 5415 /lib/i386-linux-gnu/libc-2.15.so
b7fb1000-b7fb4000 rw-p 00000000 00:00 0
b7fbc000-b7fd8000 r-xp 00000000 00:11 5426 /lib/i386-linux-gnu/libgcc_s.so.1
b7fd8000-b7fd9000 r--p 0001b000 00:11 5426 /lib/i386-linux-gnu/libgcc_s.so.1
b7fd9000-b7fda000 rw-p 0001c000 00:11 5426 /lib/i386-linux-gnu/libgcc_s.so.1
b7fda000-b7fdd000 rw-p 00000000 00:00 0
b7fdd000-b7fde000 r-xp 00000000 00:00 0 [vdso]
b7fde000-b7ffe000 r-xp 00000000 00:11 5405 /lib/i386-linux-gnu/ld-2.15.so
b7ffe000-b7fff000 r--p 0001f000 00:11 5405 /lib/i386-linux-gnu/ld-2.15.so
b7fff000-b8000000 rw-p 00020000 00:11 5405 /lib/i386-linux-gnu/ld-2.15.so
bffdf000-c0000000 rw-p 00000000 00:00 0 [stack]

最佳答案

看起来您正在尝试释放已经释放或取消引用的内存。

将您的程序链接到 efence或使用 valgrind 运行它.

这将告诉您指针在何处被解除引用。

关于c - 为什么我会收到此内存访问错误 'double free or corruption'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12548868/

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