システム コールなしではヒープにメモリを割り当てることができないため、この関数の単体テストを作成することはできません。したがって、テスト対象のユニットをオペレーティング システムから分離できないため、これは統合テストです。
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 で実行されます