LINUX.ORG.RU

разработака shared библиотеки

 , , ,


0

3

При пользовании библиотеки через 'dlopen' приложением, может ли библиотека «видеть» память этого приложения? Например, мне хотелось бы передать библиотечному ф-ции указатель на некие объекты аллоцированные моим приложением.

★★

Может. Они в одном и том же адресном пространстве находятся.

kim-roader ★★
()

На линуксе всё будет нормально.

А вот на Windows не всё так однозначно, это если потом встанет вопрос о портировании.

yoghurt ★★★★★
()

Конечно ты можешь передать указатель, не важно как ты её слинкуешь, с помощью dlopen или статически с помощью ld

anonymous
()
Ответ на: комментарий от anonymous

Передать можно. Удалять там это указатель нельзя.

Его нигде и никогда гарантированно удалять нельзя, malloc в одной библиотеке может быть совсем не тем, что в другой. Потому все библиотеки и предостовляют пару функций - создание и удаление.

anonymous
()
Ответ на: комментарий от anonymous

Его нигде и никогда гарантированно удалять нельзя, malloc в одной библиотеке может быть совсем не тем, что в другой.

Он что статически слинкован и к одной, и к другой или с чего бы ему быть разным?

Потому все библиотеки и предостовляют пару функций - создание и удаление.

В любом случае.

gag ★★★★★
()
Ответ на: комментарий от gag

Он что статически слинкован и к одной, и к другой или с чего бы ему быть разным?

Например, разные версии одного символа. Или какой-то аллокатор не из glibc, вроде jemalloc.

anonymous
()
Ответ на: комментарий от anonymous

Например, разные версии одного символа. Или какой-то аллокатор не из glibc, вроде jemalloc.

Оно в таком случае вообще не будет корректно работать независимо от места освобождения памяти.

mashina ★★★★★
()
Ответ на: комментарий от anonymous

Например, разные версии одного символа.

Хм, в общем, да. Но касательно malloc в debian glibc: 2.3.6 т.е. уже 10 лет без изменений.

Или какой-то аллокатор не из glibc, вроде jemalloc.

Это будет видно, т.к. либа будет тянуть в зависимостях jemalloc. Но, да, лучше не заморачиваться.

gag ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.