powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Выделение памяти в коде динамической (.so) библиотеки
5 сообщений из 5, страница 1 из 1
Выделение памяти в коде динамической (.so) библиотеки
    #38721858
EvLaUy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня возник вопрос по одному из аспектов использования динамических библиотек. Возможно, вопрос дилетантский, но вот ясности нет. Допустим, я в одном из модулей (.c-файлов) динамической библиотеки объявляю глобальную переменную, что-то вроде
struct myStruct *ptr;
И в коде одной из функций этого модуля пишу:
if (ptr == NULL) ptr=malloc(sizeof(struct myStruct));
Теперь предположим, что некоторое приложение A, обратившись к библиотеке, выполнило это функцию и инициализировало указатель ptr. Вопрос такой: если при работающем приложении A эту же функцию выполнит приложение B, проверка указателя ptr вернет NULL или нет? Т.е. после того, как приложение A выполнило инициализацию, указатель ptr (до того, как приложение A его освободит) увидят проинициализированным все обратившиеся к данной функции приложения или каждое приложение увидит NULL и должно будет выделять память под ptr для себя?
Для моей задачи очень важно, чтобы каждое приложение, работающее с библиотекой, имело СВОЮ, выделенную этой библиотекой память, именно ДЛЯ ДАННОГО приложения, а не одну память для всех. Скажите, это возможно? Может быть, такую задачу нужно решать как-то по другому? Еще раз прошу прощения за возможный дилетантизм вопроса.
...
Рейтинг: 0 / 0
Выделение памяти в коде динамической (.so) библиотеки
    #38721872
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EvLaUyчтобы каждое приложение, работающее с библиотекой, имело СВОЮ, выделенную этой библиотекой память, именно ДЛЯ ДАННОГО приложения, а не одну память для всех.
По умолчанию так оно и есть. Каждое приложение имеет свою копию сегмента данных динамической библиотеки.
...
Рейтинг: 0 / 0
Выделение памяти в коде динамической (.so) библиотеки
    #38721889
EvLaUy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovsky,
большое спасибо за ответ. Значит, для каждого вновь запущенного приложения ptr будет равен NULL. Ну да, это логично, иначе зачем нужен бы был такой механизм межпроцессного обмена как общие сегменты памяти (shmget), вот туда-то уже могут писать все работающие приложения.
В принципе, у меня типичная болезнь многих программистов, наверное: хорошо алгоритмизируют, хорошо знают синтаксис языков, но "плавают" в некоторых принципиальных вопросах - как работает компьютер в целом. А без этого хорошую программу не напишешь.
...
Рейтинг: 0 / 0
Выделение памяти в коде динамической (.so) библиотеки
    #38721902
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EvLaUyхорошо алгоритмизируют, хорошо знают синтаксис языков, но "плавают" в
некоторых принципиальных вопросах - как работает компьютер в целом.
"Компьютер вцелом" тут ни при чём, это особенности функционирования конкретной ОС. Win16,
например, имела этот сегмент данных общий и IPC на ней строилось в том числе и через
глобальные переменные динамических библиотек.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Выделение памяти в коде динамической (.so) библиотеки
    #38722015
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Win32 - позволяет отдельным сегментам данных быть разделяемыми (#pragma data_seg + инструкции линкеру)
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Выделение памяти в коде динамической (.so) библиотеки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]