Я только начал играть с переопределением глобального new / delete (исключительно для образовательных целей), и у меня возникла проблема.
Я использую довольно зрелый проект для тестирования с несколькими k loc. Первым делом я переопределил new
и new[]
, чтобы просто использовать malloc
и увеличить статический счетчик. new
, кажется, работает нормально, но я заметил, что мой new
вызывается из-за версии new[]
из newaop.cpp
, которая выглядит так:
void *__CRTDECL operator new[](size_t count) _THROW1(std::bad_alloc)
{ // try to allocate count bytes for an array
return (operator new(count));
}
Моя версия
void* operator new[](size_t count)
{
// malloc and whatnot
}
new[]
вызывается некоторыми функциями stl. Мои версии находятся в файле .h / .cpp, который является первым включением во все остальные файлы проекта.
У меня не было много времени, чтобы попытаться выяснить, почему сегодня утром, но я был бы рад, если бы кто-то мог объяснить, почему моя версия не называется.
Редактировать: сборка отладка / x86, я не помню контейнер stl (не дома), но, вероятно, map
.