Size: a a a

2020 September 03

🦊

🦊fox.cpp 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
А что там /MT делает у мсвс?
источник

RM

Roy Mustang 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).
То есть, если линкую DLL в проекте, то это приводит к разным кучам?
источник

RM

Roy Mustang in C++ Together 2.0
а так же runtime типы если отличаются?
источник

ВК

Вика Котейкина... in C++ Together 2.0
🦊fox.cpp
А что там /MT делает у мсвс?
Causes the application to use the multithread, static version of the run-time library. Defines _MT and causes the compiler to place the library name LIBCMT.lib into the .obj file so that the linker will use LIBCMT.lib to resolve external symbols.
источник

IZ

Ilia Zviagin in C++ Together 2.0
Roy Mustang
То есть, дело не в памяти вовсе
Давай ты код опубликуешь, тогда будешь спрашивать. А так -- в чём там у тебя дело -- да фиг тебя знает, что ты там понаписал...
источник

ВК

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

RM

Roy Mustang in C++ Together 2.0
Ilia Zviagin
Давай ты код опубликуешь, тогда будешь спрашивать. А так -- в чём там у тебя дело -- да фиг тебя знает, что ты там понаписал...
Так у меня нет проблем, просто спрашиваю
источник

RM

Roy Mustang in C++ Together 2.0
Вика Котейкина
Нельзя полагаться на то что куча общая будет
Вот я и хочу узнать какие факторы влияют
источник

IZ

Ilia Zviagin in C++ Together 2.0
Вика Котейкина
Causes the application to use the multithread, static version of the run-time library. Defines _MT and causes the compiler to place the library name LIBCMT.lib into the .obj file so that the linker will use LIBCMT.lib to resolve external symbols.
Статический рантайм сейчас никто не использует. А динамический не бывает не многопоточный.
источник

IZ

Ilia Zviagin in C++ Together 2.0
Roy Mustang
Вот я и хочу узнать какие факторы влияют
Куча общая будет. И должна быть. Нет -- так у тебя нарушение ODR, а это не лечится
источник

🦊

🦊fox.cpp in C++ Together 2.0
Ilia Zviagin
Статический рантайм сейчас никто не использует. А динамический не бывает не многопоточный.
Статический не используют потому что вот так стреляет?
источник

🦊

🦊fox.cpp in C++ Together 2.0
Или ещё забавные причины есть?
источник

IZ

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

RM

Roy Mustang in C++ Together 2.0
Ilia Zviagin
проблема с CRT только одна -- CRT одна должна быть. И всё.
Что такое CRT и где он определяется?
источник

RM

Roy Mustang in C++ Together 2.0
/MT и /MD что ли?
источник

IZ

Ilia Zviagin in C++ Together 2.0
🦊fox.cpp
Статический не используют потому что вот так стреляет?
Просто вообще не используют. Ни на хер никому не всралось.
Да и если у тебя .dll-и, CRT уже должно быть динамическим, в виде .dll
источник

IZ

Ilia Zviagin in C++ Together 2.0
Roy Mustang
Что такое CRT и где он определяется?
С RunTime library
источник

RM

Roy Mustang in C++ Together 2.0
Ilia Zviagin
С RunTime library
Это я понял, а где он настраивается или от чего зависит
источник

RM

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

🦊

🦊fox.cpp in C++ Together 2.0
Что тебе надо регулировать то
источник