Size: a a a

2020 September 03

ВК

Вика Котейкина... in C++ Together 2.0
когда динамическая библиотека загружается, она же не загружается в память другого процесса
источник

IZ

Ilia Zviagin in C++ Together 2.0
Вика Котейкина
под образ грубо говоря
Можешь написать полное, развернутое предложение, что по что и куда выделяется, по твоему мнению?


Или это на другой вопрос ответ у тебя?
источник

ВК

Вика Котейкина... in C++ Together 2.0
Roy Mustang
Не уверен что из приложения можно вызывать m_Plugins.clear(), так как объекты классов плагинов лежат в области памяти .dll
если по этому поводу - то не выделяется отдельная, т.к. то что создается в рантайме будет создаваться в heap, а это пространство общее. но выделяется под сам образ dll
источник

RM

Roy Mustang in C++ Together 2.0
Вика Котейкина
если по этому поводу - то не выделяется отдельная, т.к. то что создается в рантайме будет создаваться в heap, а это пространство общее. но выделяется под сам образ dll
Поподробнее?
источник

IZ

Ilia Zviagin in C++ Together 2.0
Вика Котейкина
когда динамическая библиотека загружается, она же не загружается в память другого процесса
Она загружается в память другого процесса.
Точнее, как это другого? Она, . Dll, загружается в память каждого процесса, который её использует, а своей памяти у .dll нет, в том смысле, что это не процесс
источник

RM

Roy Mustang in C++ Together 2.0
Я заметил, что память выделяемая внутри .dll runtime умирает, когда .dll высвобождается, если бы память не ограничивалась пространством .dll, то такого не было бы, не так ли?
источник

ВК

Вика Котейкина... in C++ Together 2.0
Ilia Zviagin
Она загружается в память другого процесса.
Точнее, как это другого? Она, . Dll, загружается в память каждого процесса, который её использует, а своей памяти у .dll нет, в том смысле, что это не процесс
ну я это и имею в виду, но просто с точки зрения что dll загружается самим процессом, соответственно другой в данном случае - какой-то сторониий процесс
источник

IZ

Ilia Zviagin in C++ Together 2.0
Вика Котейкина
если по этому поводу - то не выделяется отдельная, т.к. то что создается в рантайме будет создаваться в heap, а это пространство общее. но выделяется под сам образ dll
У тебя каша в голове, надо промыть...
источник

ВК

Вика Котейкина... in C++ Together 2.0
в смысле умирает?
источник

IZ

Ilia Zviagin in C++ Together 2.0
Roy Mustang
Я заметил, что память выделяемая внутри .dll runtime умирает, когда .dll высвобождается, если бы память не ограничивалась пространством .dll, то такого не было бы, не так ли?
Нет никакой памяти внутри .dll память одна у процесса
источник

ВК

Вика Котейкина... in C++ Together 2.0
Ilia Zviagin
У тебя каша в голове, надо промыть...
да я просто уже несколько лет с этим не сталкиваюсь
источник

RM

Roy Mustang in C++ Together 2.0
Тогда к чему относится исключение доступа, когда ты освобождаешь .dll в котором юзал new, а в самом процессе в итоге ты доступ после освобождения .dll получить к выделенной памяти не можешь
источник

IZ

Ilia Zviagin in C++ Together 2.0
Roy Mustang
Тогда к чему относится исключение доступа, когда ты освобождаешь .dll в котором юзал new, а в самом процессе в итоге ты доступ после освобождения .dll получить к выделенной памяти не можешь
Чего?
источник

ВК

Вика Котейкина... in C++ Together 2.0
Roy Mustang
Тогда к чему относится исключение доступа, когда ты освобождаешь .dll в котором юзал new, а в самом процессе в итоге ты доступ после освобождения .dll получить к выделенной памяти не можешь
Может быть в dll прописана процедура которая освобождает используемые объекты при выгрузке?
источник

IZ

Ilia Zviagin in C++ Together 2.0
Roy Mustang
Тогда к чему относится исключение доступа, когда ты освобождаешь .dll в котором юзал new, а в самом процессе в итоге ты доступ после освобождения .dll получить к выделенной памяти не можешь
Исключения по защите памяти относятся исключительно к ошибкам в твоей программе, более ни к чему
источник

IZ

Ilia Zviagin in C++ Together 2.0
Вика Котейкина
Может быть в dll прописана процедура которая освобождает используемые объекты при выгрузке?
Это может быть.
Так не выгружай .dll если не умеешь
источник

RM

Roy Mustang in C++ Together 2.0
Вика Котейкина
Может быть в dll прописана процедура которая освобождает используемые объекты при выгрузке?
Нет, я когда начинал писать динамическую загрузку, то сталкивался с тем, что классы загруженные в хеш мапу приложения в итоге умирали, когда .dll освобождался
источник

RM

Roy Mustang in C++ Together 2.0
Хотя в той же хеш мапе аллокатор есть, который выделяет память в куче
источник

RM

Roy Mustang in C++ Together 2.0
То есть, при попытке получить доступ к таким классам приводит к исключению доступа вроде, если .dll освободил
источник

RM

Roy Mustang in C++ Together 2.0
Я так и не понял почему исключение кидалось, вроде куча общая у процесса
источник