Это может быть не очень полезно для вас, но вы можете написать свою собственную оболочку malloc. В наших специальных «диагностических» сборках он хранит таблицу всех ожидающих выделений (включая имя файла и номер строки, где произошло выделение) и распечатывает все, что еще оставалось невыполненным во время выхода. Он также использует канареечные слова (для проверки переполнения буфера) и комбинации перезаписи памяти и контрольной суммы блоков после освобождения и перед перераспределением (для проверки использования после освобождения).
Если ваш продукт достаточно большой, может быть раздражает необходимость найти и заменить весь ваш источник, надеясь на лучшее. Кроме того, время разработки вашей собственной оболочки malloc, вероятно, не является незначительным. Выполнение большого количества тяжеловесных вещей, подобных тому, что я упоминал выше, вероятно, также не поможет решить вашу проблему со скоростью. Однако написание вашей собственной обертки дало бы наибольшую гибкость.