Ho momentaneamente aggiornato tutti gli assert con degli if per evitare scherzetti e questa è la versione del codice aggiornata:

http://www.ideone.com/6lpa7

Ora però ho un problema, su windows il codice viene compilato senza errori, viene eseguito del tutto, solo che alla fine dell'esecuzione termina come se fosse crashato, ovvero mi appare una schermata che dice "che ha smesso di funzionare" come qunado crasha (eppure non ce ne sono più di assert nascoste che lo fanno terminare. Inoltre esegue tutto "bene" o almeno credo.

Su Xubuntu invece si esegue normalmente e senza crashare.

Qui su windows ho eclipse + mingw, su ubuntu ho eclipse e credo g++ o qualcosa di simile.

Secondo voi cosa può essere? come mai crasha cosi? Anche su ideone dice che "ci sono problemi" quando non ce ne sono.