この例をとると:
std::map<int,foo*> intmap;
fillMap(intmap);
// I will force this to end(), in real life this could be a "find" output
std::map<int,foo*>::iterator iter = intmap.end();
if(iter->second != 0)
iter->second->whatever();
「whatever()」呼び出しでセグメンテーション違反が発生しています(これは予想されますが、例では意図的に「iter!= intmap.end()」をチェックしていません)が、「->second」nullポインタチェックでは発生していません。それは期待される動作ですか?このセグメンテーション違反は「whatever()」呼び出しで体系的に発生しますか、それとも特定の実行時のメモリ条件に依存しますか?
コメントありがとうございます。ジャコモ