システム コールなしではヒープにメモリを割り当てることができないため、この関数の単体テストを作成することはできません。したがって、テスト対象のユニットをオペレーティング システムから分離できないため、これは統合テストです。
allocation_routine
を呼び出す新しい小さな実行可能ファイルを作成します。 n
の場合 バイト。 allocation_routine
に応じて nullptr
以外であると断言できます。 .次に、 n
と書きます バイトをこのメモリ領域に挿入します。 アドレスサニタイザーを使用してコンパイルおよびリンクします (両方の gcc
で利用可能 および clang
)、それをアプリケーションのテスト ランナーに統合してみてください (ctest
など)
割り当てが失敗したときの動作を確認するために、POSIX setrlimit を介して利用可能なヒープを制限することもできます。
Linux カーネル 2.6.26 で、#define atom_read(v) ((v)->counter + 0) が見つかりました。なぜ +0 なのですか?
vmlinuz プロセスは 100% の CPU で実行されます