アサーションは、条件(precondition、postcondition、invariants)が満たされているかどうかを確認し、プログラマーがデバッグ段階で穴を見つけるのに役立ちます。
例えば、
void f(int *p)
{
assert(p);
p->do();
}
私の質問は、リリースモードで条件を満たせなかったと想定し、それに応じてケースを処理する必要があるかどうかです。
void f(int *p)
{
assert(p);
if (p)
{
p->do();
}
}
結局のところ、アサーションは、テストする条件が決して偽であってはならないことを意味します。しかし、チェックせずに失敗すると、プログラムがクラッシュします。ジレンマのように聞こえます。どうやって対処しますか?