与えられたのは、次の要素を持つクラスです。
std::array<Class*, 4> children;
デバッグ モードで、初期化されていない配列の要素をチェックすると、 がnullptr
返されますtrue
。
if(children[0]==nullptr)
ただし、リリース モード (O1、O3、または Os に関係なく、最適化が有効になっている) では、チェックは を返しますfalse
。
要素は何らかの方法で初期化されているようですが、それらにアクセスするとセグメンテーション違反が発生します。この動作を回避するには、std::array
withnullptr
要素を明示的に初期化する必要があります。
std::array<Class*, 4> children{{nullptr}};
これはなぜですか?
編集:この場合に使用されるコンパイラはApple LLVM 4.2 (Xcode 4.6.3)
.