动态模块中的内存分配问题

时间:2011-08-18 14:40:52

标签: c malloc dynamic-library

我的程序成功加载了一个库(dlopen(...,RTLD_GLOBAL | RTLD_NOW);)。在库里面我有一个调用malloc()函数的函数。当我尝试分配一小块内存(例如,120字节)时,该功能运行良好。但是如果我试图获得更多(例如,1024字节),我的应用程序将死于一个长报告,如:

*** glibc detected *** /home/darkamateur/NetBeansProjects/PureServer/dist/Debug/GNU-Linux-x86/pureserver: corrupted double-linked list: 0x00000000006267d0 ***
======= Backtrace: =========
/lib64/libc.so.6(+0x731fd)[0x7ffff76d81fd]
/lib64/libc.so.6(+0x7363d)[0x7ffff76d863d]
/lib64/libc.so.6(+0x75994)[0x7ffff76da994]
/lib64/libc.so.6(__libc_malloc+0x62)[0x7ffff76dcfc2]
./libs/omps.blob(systemRun+0x12)[0x7ffff71cd9be]
/home/darkamateur/NetBeansProjects/PureServer/dist/Debug/GNU-Linux-x86/pureserver[0x401f48]
/lib64/libc.so.6(__libc_start_main+0xec)[0x7ffff7683d4c]
/home/darkamateur/NetBeansProjects/PureServer/dist/Debug/GNU-Linux-x86/pureserver[0x400fa9]

没有任何数据交换,共享变量,线程等。

主应用程序中的内存分配与它的动态库之间是否存在一些差异?

1 个答案:

答案 0 :(得分:0)

可能与动态库无关 - 你在某处破坏了内存。 valgrind是你的朋友