Как правильно заменить глобальные операторы new и delete

Во-первых, на SO было как минимум 4-5 тем с похожей темой. Я читаю каждую из них и не чувствую, что они действительно помогают мне в этом конкретном вопросе. Если кто-то еще найдет повторяющийся вопрос, прошу прощения. Я проделал свою долю поиска, прежде чем опубликовать это, так как это кажется очень распространенным вопросом.

Я использую Visual Studio .NET 2003 в Windows 7.

У меня есть собственные перегрузки new / delete, которые указывают на мои собственные вызовы функций malloc () и free () для диагностики. Мои новые / удаляемые перегрузки находятся в файле заголовка, который я включил в несколько файлов.

Проблема в том, что кодовая база представляет собой спагетти, и нет простого способа убедиться, что эти перегрузки используются всем. Есть включения в сторонние библиотеки, которые являются черным ящиком. Мы также везде используем STL.

В своих тестах я обнаружил, что STL все еще смешивает вызовы моих собственных вызовов new / delete и стандартных вызовов new / delete MSVC.

Кажется нереалистичным включать мой заголовочный файл в тысячи других файлов, это просто займет слишком много времени. Может ли кто-нибудь дать несколько советов о том, как правильно и эффективно перегрузить новые / удалить глобально, чтобы все использовали мой собственный диспетчер памяти?

57
задан void.pointer 18 November 2011 в 16:58
поделиться