今日の楽しいデバッグ セッションで、セグメンテーション エラーの原因は多かれ少なかれ次のようなものであることに気付きました。
assert(functionWithSideEffect());
doSomethingWhichSegfaultsUnlessSideEffectHappens();
このようなことをしてはいけないことは十分に承知しており、明らかにコードを修正しましたが、デバッグ実行可能ファイルでテストしたときに、つまり NDEBUG を定義せずに、なぜセグメンテーション違反が発生したのかまだ混乱しています。
この場合、アサーションの引数にある関数を実行するべきではありませんか?