У меня есть две библиотек 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?
«... Но ключ карты и значения (векторные элементы) находятся в стеке». Они есть? Вы не указали строку кода, которая фактически помещает ключевое значение * в * карту. И 'std :: map' динамически управляет своим контентом независимо. – WhozCraig
Ключи, безусловно, не находятся в «стеке памяти». – molbdnilo
Я голосую, чтобы закрыть этот вопрос как вне темы, потому что он основан на определенных заблуждениях и не будет полезен для будущих исследований. –