Pro tuto funkci nemůžete napsat test jednotky, protože nemůžete alokovat paměť na haldě bez systémového volání. Jedná se tedy o integrační test, protože nejste schopni izolovat testovanou jednotku od operačního systému.
Vytvořil bych nový, malý spustitelný soubor, který volá allocation_routine
pro n
bajtů. Podle toho, co allocation_routine
se má vrátit, můžete tvrdit, že to není nullptr
. Poté napište n
bajtů do této oblasti paměti. Zkompilujte a propojte jej pomocí nástroje na dezinfekci adres (k dispozici s oběma gcc
a clang
), pak jej zkuste integrovat do testovacího programu vaší aplikace (ctest
atd.).
Můžete také chtít omezit dostupnou haldu pomocí POSIX setrlimit, abyste ověřili chování, když alokace selže.
V linuxovém jádře 2.6.26 jsem našel #define atomic_read(v) ((v)->counter + 0), proč +0?
Proces vmlinuz běží na 100% CPU