Boost Tests, например, не основывается на его собственных новых перегрузках / malloc, я на самом деле использую BOOST TESTS, и я создал новые перегрузки / malloc, чтобы увидеть, где происходит (строка и файл) проверка памяти.
BOOST является кроссплатформенным, но так как я делаю всю свою разработку для окон, я использовал некоторые существующие перегрузки функций, подобных malloc ( crtdbg.h ), и просто перегрузил новый оператор. Если вам нужно, чтобы ваши тесты были кроссплатформенными, вы можете перегрузить malloc вручную.
приведенный ниже код является содержимым файла .h , который является последним включенным файлом каждого файла .cpp .
#ifdef _DEBUG
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
#define DEBUG_NEW new(_NORMAL_BLOCK, __FILE__, __LINE__)
#define new DEBUG_NEW
#endif
Я использовал этот подход, потому что некоторые части boost (не часть тестирования) перегружают новый оператор, и у меня также есть другая библиотека, которая внутренне перегружает новый оператор, поэтому, включив это в конец списка включений, я уверен, что я не связывайтесь с внутренностями моих библиотек.
http://www.boost.org/doc/libs/1_48_0/libs/test/doc/html/index.html