s Я нахожусь на Windows, и я строю проект C ++ с VS2008.Я пытаюсь заменить новый / delete / malloc / free и т. Д., Который работает, т.е. мои замены вызывают.
Однако мой замещающий распределитель должен быть инициализирован.До сих пор я делал это, определяя его как глобальную переменную в файле .cpp с определенной в нем #pragma init_seg (lib).
Это работало до недавнего времени, когда начал инициализироваться std :: locale, который вызывал new до инициализации моего распределителя.Поэтому я нервно переместил глобальную переменную моего распределителя в сегмент компилятора, т.е. #pragma init_seg (compiler).
Это немного подействовало, и затем я решил переопределить malloc.Теперь я получаю вызов malloc в __crtGetStringTypeA_stat в _tmainCRTStartup, который происходит до того, как инициализируются даже глобальные переменные в сегменте компилятора.
Есть ли какой-либо способ создания моей переменной до запуска CRT.Единственное, о чем я могу подумать, это перестроить мою библиотеку crt и попробовать кое-что, как вставить мой код инициализации туда-сюда.Я предполагаю, что должна быть также функция очистки crt?
Есть ли более простой путь к этому и / или что-то очевидное, что я здесь упускаю?