Originariamente inviato da superamble
Credo che comunque, come ho scritto in precedenza , il problema stia nella prima porzione di codice che ho postato e in particolare sulla chiamata di move().
Il problema era nel metodo game:

codice:
int check(ChessPiece ** game)
{
	int loser=-1;
	for(int i=0;i<=7 && loser==-1;i++)
		{
			for(int j=0;j<=7 && loser==-1;j++)
			{
				if(game[i][j].color!=-2)
				loser=game[i][j].move(i,j,game);
			}
		}
	
	return loser;
}
Non stavi allocando memoria, ma ti sei corretto tu stesso.
Quando ci sono porzioni di codice che si chiamano a vicenda non puoi sapere con certezza qual'è la parte che causa il problema, ammenochè non sia una porzione di codice indipendente dalle altre.
Comunque _tmain non è c++ standard, è fatto dalla Microsoft e ho il serio sospetto che l' unico motivo sia quello di rendere i programmi non portabili su altre piattaforme.
La funzione main del c++ standard è:

codice:
int main(int argc, char** argv)