0

私のプログラムはライブラリを正常にロードします(dlopen(...、RTLD_GLOBAL | RTLD_NOW);)。ライブラリ内には、malloc()関数を呼び出す1つの関数があります。小さなメモリ(たとえば、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]

データ交換、共有変数、スレッドなどはありません。

メインアプリケーションのメモリ割り当てとダイナミックライブラリの間にいくつかの違いはありますか?

4

1 に答える 1

0

おそらく動的ライブラリとは何の関係もありません-どこかでメモリを破損しています。 ヴァルグリンドはあなたの友達です

于 2011-08-18T17:06:00.310 に答える