エラーの詳細はRelease実行時にnullptrを代入した変数がどこかでnullptrじゃなくなりアクセス違反になるというものです。
プロジェクトは大きいので書ききれないのですが、アクセス違反になったコード部分を記載します。
//-----------------------------------------------------------------------------
//! 更新
//-----------------------------------------------------------------------------
void SystemScene::update()
{
// 次のシーンへのジャンプリクエストがある場合は切り替える
if( _pNextScene ) {
// 同じタイプのシーンを取得
_pScene = getSameTypeScene(*_pNextScene);
// なければ
if( _pScene == nullptr ) {
// 新規作成
_pScene = (SceneBase*)_pNextScene->createInstance();
// スタック情報作成
StackData* stack = new StackData();
stack->_pScene = _pScene;
stack->_typeData = (Type*)_pNextScene;
// スタックする
_pSceneStack.push_back(stack);
}
// メモリ確保できていたら
if( _pScene != nullptr ) {
// 初期化
if( _pScene->init() == false ) {
// 失敗したら削除
_pScene->cleanup();
GM_RELEASE(_pScene);
}
}
_pNextScene = nullptr; // リクエストを消す
}
//-------------------------------------------------------------
// 更新
//-------------------------------------------------------------
if( _pScene ) {
_pScene->update();
}
}
その情報をシーンをスタックしているリストの中から検索して、あればそのシーンを使い、なければ新しく作成してリストに追加するというものです。
このプログラムの という部分でクラッシュしてしまいます。原因は_pNextSceneにnullptrを入れているのですが、 この部分で_pNextSceneに適当なポインタがはいり、次にループ時に適当クラッシュしてしまいます。
_pNextSceneはprivate変数で変更するための関数はありますが、その部分を呼んでいる気配はなかったです。
この場合考えられる原因があれば教えていただけないでしょうか。
こういったクラッシュの仕方は初めてで調べていますが、まだ原因がうまくつかめていません。
思いつくことがありましたら、回答お願いいたします。
開発環境 : windows7 visual studio 2010 C++
再現率 : Releaseなら100%