かなり単純なものが欠けているのかもしれませんが、式の最初のポイントをチェックしているにもかかわらず、ポインターを逆参照するとクラッシュします。
if( var1 &&
bool1 || bool2 &&
var1->DoSomething() )
{
}
var1 は null ポインターですが、Var1->Dosomething() はまだ呼び出されています。私の理解では、 && と || は C++ の演算子は短絡であるため、var1 が null の場合、最初に終了します。それとも、私が見逃しているものがありますか?