лики тестятся специальным флагом CRT, но так как вы заменяете управление памятью своим монстром, встроенные средства юзать не получится. а на глаз лики никто не ищет.
поэтому и не пользуюсь HeapAlloc HeapReAlloc так как в случае с malloc realloc я могу
использовать отладочные их версии и в конце программы вызвать _CrtDumpMemoryLeaks();
что покажет мне все лики вплоть до строчки выделения памяти которая не освобождена была для не больших проектов прекрасно помогает а в первом случае для системных апи придется втыкать самостоятельно и сто процентов не найдеш все лики
_CrtMemState ms;
_CrtMemDumpAllObjectsSince(&ms);
/// много кода интенсивно работающего с памятью
_CrtDumpMemoryLeaks();
это для поиска ликов на отдельных участках программы интенсивно оперирующих с памятью
вернее так для мониторинга участков программы
_CrtMemState ms;
_CrtMemCheckpoint(&ms);
/// тут много кода с вызовами malloc realloc free
_CrtMemDumpAllObjectsSince(&ms);
или если для всей программы смотреть перед выходом из main или WinMain перед return можно вставить один вызов _CrtDumpMemoryLeaks(); и все