即使有足够的可用字节,Malloc也没有分配到字节。

问题描述 投票:1回答:1

我试着用一个包装函数来分配21,128个字节,这个函数在内部调用malloc。

Malloc Stats():-

system bytes     =   14618624
in use bytes     =   13759424
Arena 1:

Arena 0:
system bytes     =   14626816
in use bytes     =   13759600
Arena 1:
system bytes     =     135168
in use bytes     =       3280
Arena 2:
system bytes     =     135168
in use bytes     =      13088

但我还是看到malloc失败了。可能的原因是什么?

*** Error in `./wr_acc': malloc(): memory corruption: 0x00007ff4747a2ff0 ***

======= Backtrace: =========
/lib64/libc.so.6(+0x82c86)[0x7ff48c9d5c86]
/lib64/libc.so.6(__libc_malloc+0x4c)[0x7ff48c9d884c]
./wr_acc[0xdf4c28]

请帮助我。我是一个初学者。

memory gdb malloc corruption
1个回答
1
投票

错误信息很清楚。

*** Error in `./wr_acc': malloc(): memory corruption: 0x00007ff4747a2ff0 ***

malloc() 检测到其附属结构中的无效状态,所以它放弃了分配内存的尝试,并中止了程序,以避免潜在的破坏性副作用。

私人数据 malloc() 用来跟踪已分配块和空闲块的代码可能已经被你的程序覆盖了,例如,在已分配块结束后或开始前写入。你可以把代码贴出来,看看是否有人能发现这样的问题。

© www.soinside.com 2019 - 2024. All rights reserved.