2012-03-07 15 views
5

üzerinde düzgün çalışıyor, bu sadece burada "emin olmak" sorusu. .NET 4'te x64 sistemleri için yineleme/döngülerde bilinen herhangi bir özel sınırlama/hata var mı?StackOverflowException; x86

Durumum oldukça basit - bir program herhangi bir x86 sisteminde düzgün çalışıyor ancak x64 sistemlerinde bir StackOverflowException ile çöküyor (program, çeşitli yerlerde yineleme içeren bazı xml/mapping kodu içeriyor).

Şu anda bu soruna yönelik tek çözüm, derlememde corflags /32BIT+ numaralı telefonu aramaktır (ve program düzgün çalışmaya başlar). Ama merak ediyordum - x64 üzerinde hatalara/sorunlara neden olduğu bilinen herhangi bir özel durum var mı?

Teşekkürler.

cevap

9

İşaretçiler x64'te daha fazla bellek gerektirir (aslında iki katı). Bu nedenle, çok daha fazla bellek kullanacaksınız ve bu kadar derin özyineleme x64'te x64'te olduğundan daha fazla yığın taşmasına neden olabilir. Bu sorunu hafifletmek için raising the stack limit'u denemek isteyebilirsiniz.

+3

Bu, bir keresinde çalıştığım bir şirkette yaşandı ... görünüşe göre binadaki tek kişi neden böyle olduğunu açıklayabiliyordu ... C'nin bu yıllara para ödemesi ve 64 bitlik gemi almaları gerekiyordu. –

+0

Yorum ve bağlantı için teşekkürler - her ikisi de çok yardımcı oldular. Ve evet, yığın sınırını artırmak da yardımcı oldu. – Jefim