ページ 11

std::list、ReleaseBuildしたexeで不具合

Posted: 2016年12月05日(月) 18:41
by GON

コード:

void Manager::Update()
{
	RemoveCheck();
	for(std::list<Base*>::iterator it = list.begin() ; it != list.end(); it++)
	{
		((Base*)(*it))->Update();
	}
	CreateUpdate();
	//!更新回数更新
	time++;
}
void Manager::CreateUpdate()
{
	for(int i = 0 ; i < EnemyMax ;  i++)
	{
		if( info[i].time == time)
			EnemyCreate(Vector(static_cast<float>(info[i].posx), static_cast<float>(info[i].posy)), Vector(static_cast<float>(info[i].sizex), static_cast<float>(info[i].sizey)), Color::Red() );
	}
}
void Manager::PlayerCreate(Vector pos, Vector size, Color col)
{
	Player* pl = new Player(pos, size, col);
	list.push_back(pl);
}
void Manager::EnemyCreate(Vector pos, Vector size, Color col)
{
	Enemy* en = new Enemy(pos, size, col);
	list.push_back(en);
}
VS2012よりビルド実行でRelease、debugともに正常に動くのですが、Releaseビルドしたexeで起動したときのみ、listに値が登録されません。
Releaseの最適化あたりで処理ずれてるのかなと思い、逆アセンブルして処理を追ってもやはりわからずでした。
Player,EnemyはともにBaseを継承しており、リストの宣言はlist<Base*> listとしています。どなたか知恵をお貸しいただけないでしょうか。

Re: std::list、ReleaseBuildしたexeで不具合

Posted: 2016年12月05日(月) 18:50
by GON
自己解決しました