Проблемы с выделением памяти в динамических модулях - PullRequest
0 голосов
/ 18 августа 2011

Моя программа успешно загрузила библиотеку (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 голосов
/ 18 августа 2011

Вероятно, не имеет ничего общего с динамическими библиотеками - вы где-то портите память. Вальгринд твой друг

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...