2012-03-07 13 views
5

questa è solo una domanda "per essere sicuri" qui. Esistono limitazioni/bug speciali noti su ricorsione/loop per i sistemi x64 in .NET 4?StackOverflowException generata su sistemi x64; funziona correttamente su x86

Il mio caso è piuttosto semplice: un programma funziona bene su qualsiasi sistema x86 ma si blocca con una StackOverflowException su sistemi x64 (il programma include un codice xml/mapping che contiene ricorsioni in diversi punti e simili).

Attualmente l'unica soluzione per questo problema è chiamare corflags /32BIT+ sul mio assembly (e il programma si avvia correttamente). Ma mi stavo chiedendo - ci sono casi speciali che sono noti per causare bug/problemi su x64?

Grazie.

risposta

9

I puntatori richiedono più memoria da rappresentare in x64 (il doppio in effetti). Come tale, userai molta più memoria, e la ricorsione così profonda può causare overflow dello stack su x64 prima di quanto accadrebbe su x86. Si consiglia di provare raising the stack limit per mitigare questo problema.

+3

Questo è successo una volta in una società per cui ho lavorato ... a quanto pare ero l'unico nell'edificio che potesse spiegare perché è successo ... quegli anni di C hanno pagato, e loro hanno dovuto spedire 64 bit. –

+0

Grazie per il commento e il collegamento - entrambi sono stati molto utili. E sì, anche l'aumento del limite di stack ha aiutato. – Jefim

Problemi correlati