Вы не можете написать модульный тест для этой функции, потому что вы не можете выделить память в куче без системного вызова.Следовательно, это интеграционный тест, поскольку вы не можете изолировать тестируемый модуль от операционной системы.
Я бы создал новый небольшой исполняемый файл, который вызывает allocation_routine
для n
байтов.В зависимости от того, что allocation_routine
должен вернуть, вы можете утверждать, что это не nullptr
.Затем запишите n
байт в эту область памяти.Скомпилируйте и скомпонуйте его с помощью адресного дезинфицирующего средства (доступно как с gcc
, так и с clang
), затем попытайтесь интегрировать его в программу запуска приложения (ctest
и т. Д.).
Возможно, вы также захотите ограничить доступную кучу через POSIX setrlimit , чтобы проверить behvaior при сбое выделения.