2015-04-03 3 views
0

У меня есть две библиотек DLL, скажет А и В. Из которых один DLL B будет поменять карту из длл А.Перестановки отображение между различными библиотеками DLL

Структура карты

map<int,vector<clock_t>>* mObj = new map<int,vector<clock_t>>; 

Здесь mObj находится в памяти кучи. Но ключ карты и значения (векторные элементы) находятся в стеке. Поскольку стек будет неактивным, как только он выйдет из блока. Будут ли элементы вектора все еще существовать, когда я заменяю карту, которая находится в другой Dll (поскольку она выходит из DLL) ..?

На самом деле я могу получить векторные элементы с измененной карты из A.dll внутри B.dll. Как это возможно ...? Только в памяти стека программ A.dll были эти векторные элементы (только объект карты был в куче), то откуда я могу получить доступ к векторным элементам из B.dll?

+0

«... Но ключ карты и значения (векторные элементы) находятся в стеке». Они есть? Вы не указали строку кода, которая фактически помещает ключевое значение * в * карту. И 'std :: map' динамически управляет своим контентом независимо. – WhozCraig

+0

Ключи, безусловно, не находятся в «стеке памяти». – molbdnilo

+0

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

ответ

0

Ничего не найдено в стеке.

map<int,vector<clock_t>> не содержит указателей или ссылок на что-либо. Клавиши int будут скопированы во внутреннюю память map. То же самое для vector внутри map и clock_t внутри vector.

 Смежные вопросы

  • Нет связанных вопросов^_^