глобальная переменная, используемая в разных общих библиотеках - PullRequest
0 голосов
/ 02 января 2012

Я использую глобальный указатель на связанный список (который содержит указатель на элемент и указатель на следующий узел), который инициализируется одной DLL.Эта глобальная переменная является общей для разных библиотек DLL (общих объектов).

Ранее, когда система создает глобальный список, она инициализируется, и все библиотеки DLL имеют значение для списка.Позже, когда система работает, одна DLL (скажем, x.so) удалила память и повторно инициализировала весь список, а когда другая DLL (скажем, y.so) пытается прочитать значения, она всегда получает более старые значения.Любая подсказка, почему это происходит и как преодолеть эту проблему?

Я где-то читал, что область кучи распределяется между библиотеками DLL, я не уверен, почему я сталкиваюсь с этой проблемой.Любая помощь будет заметна.

1 Ответ

0 голосов
/ 02 января 2012

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

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