EDIT: Я думаю, что вам нужно использовать другую реализацию STL, если вам нужно использовать MSVC 2015, а также избегать переопределения вашего текущего ручка управления памятью (извините, что назовете это, но это то, на что это похоже, но затем снова я использовал несколько собственных хаков для работы с MSVC).
Я никогда не использовал реализацию STL, которая не была включена в среду разработки, но это возможно. Это должно быть простой вопрос - установить пути включения и библиотеки в альтернативную реализацию STL. Вы можете начать с попытками STLPort
В противном случае, мой первоначальный совет относительно вашего вопроса, до последнего редактирования:
Статический порядок инициализации в модуле компиляции (файл CPP) порядок, в котором сделаны заявления. Статический порядок инициализации между единицами компиляции не определен. Не используйте статическую инициализацию для решения этой проблемы.
Похоже, что RustyX направляет вас в правильном направлении, ссылаясь на Overriding memory allocator in MSVC++.
EDIT: похоже, ответ, который вы ищете, может быть здесь: How to properly replace global new & delete operators. Обратите внимание, что оба ответа актуальны, вы захотите заменить new
, delete
, new[]
и delete[]
. Поскольку это применяется во время связывания, очевидно, Windows не будет использовать их для загружаемых DLL (см. Комментарии к первому ответу).
Почему заказ имеет значение? –
@ Cheersandhth.-Alf Поскольку мой объект инициализирует пользовательскую систему памяти, если некоторые другие объекты вызывают новое перед моим объектом, это делает ошибку. :( –
Итак, фактический вопрос - [как переопределить распределитель памяти в MSVC] (http://stackoverflow.com/questions/12815867/overriding-memory-allocator-in-msvc) – rustyx