Size: a a a

2020 September 03

ВК

Вика Котейкина... in C++ Together 2.0
Может быть, vtable там?
источник

ВК

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

ВК

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

ВК

Вика Котейкина... in C++ Together 2.0
А указатель на неё становится невалидным
источник

RM

Roy Mustang in C++ Together 2.0
Вика Котейкина
А указатель на неё становится невалидным
Да, класс был vtable
источник

🦊

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

🦊

🦊fox.cpp in C++ Together 2.0
Код выгружен
источник

ВК

Вика Котейкина... in C++ Together 2.0
Ну и это тоже
источник

RM

Roy Mustang in C++ Together 2.0
🦊fox.cpp
Код выгружен
То есть, дело не в памяти вовсе
источник

🦊

🦊fox.cpp in C++ Together 2.0
Roy Mustang
То есть, дело не в памяти вовсе
Дело в памяти, в том, что маппинг в памяти с кодом больше не существует
источник

ВК

Вика Котейкина... in C++ Together 2.0
А зачем ты обращаешься к объекту после выгрузки DLL?
источник

RM

Roy Mustang in C++ Together 2.0
Так, а что за проблемы с CRT? Я вычитал что кучи у .dll и .exe могут быть разные если windows CRT разных версий
источник

RM

Roy Mustang in C++ Together 2.0
Как вообще расшифровывается CRT? C Runtime ?
источник

🦊

🦊fox.cpp in C++ Together 2.0
Roy Mustang
Как вообще расшифровывается CRT? C Runtime ?
Да
источник

🦊

🦊fox.cpp in C++ Together 2.0
Roy Mustang
Так, а что за проблемы с CRT? Я вычитал что кучи у .dll и .exe могут быть разные если windows CRT разных версий
Если ты соберёшь с разными версиями - может
источник

ВК

Вика Котейкина... in C++ Together 2.0
There is an oddity with heaps on Windows. If a DLL statically links in the C run time, then that DLL gets its own heap. So if you have 5 DLL like this then your process has at least 5 heaps. And you need to be really careful to call free() in the same DLL that called malloc() (or delete / new).
источник

RM

Roy Mustang in C++ Together 2.0
От чего зависит отличие кучи? Точнее изменение CRT версий, которое приводит к разным кучам
источник

🦊

🦊fox.cpp in C++ Together 2.0
Вика ответила
источник

ВК

Вика Котейкина... in C++ Together 2.0
It is not uncommon to have multiple CRT heaps, any DLL that was built with /MT has its own copy of the CRT and thus gets its own heap
источник

ВК

Вика Котейкина... in C++ Together 2.0
The GetProcessHeaps() function is available to iterate all the heaps in the process.
источник