Size: a a a

IT KPI C/C++ ХВ (не UB)

2021 July 02

AB

Aleksey Belkevich in IT KPI C/C++ ХВ (не UB)
Так вызывай, ничего не мешает
источник

 P

 ‌‌Gleb Pilipets... in IT KPI C/C++ ХВ (не UB)
Хм, понял...
источник

AB

Aleksey Belkevich in IT KPI C/C++ ХВ (не UB)
Если в библиотеке нету каких-то статических или глобальных объектов, которые вызывают конструктора при загрузке, то считай что все данные после загрузки неинициализированы
источник

 P

 ‌‌Gleb Pilipets... in IT KPI C/C++ ХВ (не UB)
А если моё .exe приложение использует несколько .dll (D1, D2), которые в свою очередь используют другую .dll (DD).

То сколько раз будет вызван DLL_PROCESS_ATACH на DD, если я подгружу динамически D1, D2, потом выгружу D1, D2, и т.д.
?
источник

 P

 ‌‌Gleb Pilipets... in IT KPI C/C++ ХВ (не UB)
ну то есть если это один и тот же .exe, то один раз будет вызван DLL_PROCESS_ATTACH, для всех попыток загрузки?
Там есть counter какой-то?
источник

AB

Aleksey Belkevich in IT KPI C/C++ ХВ (не UB)
Тут надо уже читать мануалы
Если под атачем подразумевается создание контекста для .dll, то при загрузке D1 и D2, каждый из них создаст ещё по контексту той общей библиотеки
источник

RN

Ruslan Neshta in IT KPI C/C++ ХВ (не UB)
нехуясебе
источник

 P

 ‌‌Gleb Pilipets... in IT KPI C/C++ ХВ (не UB)
Ох, а как так? Почему они создадут ещё по контексту?
источник

AB

Aleksey Belkevich in IT KPI C/C++ ХВ (не UB)
И всего будет 4 контекста
источник

 P

 ‌‌Gleb Pilipets... in IT KPI C/C++ ХВ (не UB)
Я думал, что один контекст будет
источник

 P

 ‌‌Gleb Pilipets... in IT KPI C/C++ ХВ (не UB)
Тип мы первый раз подгрузили и контекст создался, потом просто счётчик на подгрузки увеличивается...

Затем счётчик обратился в ноль и контекст удалился...
источник

AB

Aleksey Belkevich in IT KPI C/C++ ХВ (не UB)
Допустим в библиотеке есть какие-то статические или глобальные данные и она уже находится в оперативной памяти.
Для каждого нового участника который хочет к ней присоедениться создаётся выделенная область памяти где храняться эти самые глобальные/статические данные
источник

 P

 ‌‌Gleb Pilipets... in IT KPI C/C++ ХВ (не UB)
а участник это что - .exe?
источник

AB

Aleksey Belkevich in IT KPI C/C++ ХВ (не UB)
В том числе
источник

 P

 ‌‌Gleb Pilipets... in IT KPI C/C++ ХВ (не UB)
а другая .dll это участник?
источник

 P

 ‌‌Gleb Pilipets... in IT KPI C/C++ ХВ (не UB)
которая подгружается в тот же .exe?
источник

AB

Aleksey Belkevich in IT KPI C/C++ ХВ (не UB)
Это же справедливо для других .dll, но лучше проверить на msdn
источник

 P

 ‌‌Gleb Pilipets... in IT KPI C/C++ ХВ (не UB)
лол, а как тогда Singletone сделать в .dll, если бы при каждой подгрузке создавался свой контекст...
источник

AB

Aleksey Belkevich in IT KPI C/C++ ХВ (не UB)
Синглтон это паттерн проектирования в ооп, как он относиться к контекстам библиотек?
источник

 P

 ‌‌Gleb Pilipets... in IT KPI C/C++ ХВ (не UB)
ну мне нужно синглтон на всю .dll
источник