2012-03-07 35 views
5

đây chỉ là câu hỏi "chắc chắn" ở đây. Có bất kỳ giới hạn/lỗi đặc biệt đã biết nào về đệ quy/vòng lặp cho các hệ thống x64 trong .NET 4 không?StackOverflowException được ném trên hệ thống x64; hoạt động đúng trên x86

Trường hợp của tôi khá đơn giản - một chương trình chạy tốt trên bất kỳ hệ thống x86 nào nhưng nó bị treo với StackOverflowException trên hệ thống x64 (chương trình bao gồm một số mã xml/ánh xạ có chứa nhiều lần truy cập).

Hiện tại, giải pháp duy nhất cho vấn đề này là gọi corflags /32BIT+ trên bộ phận lắp ráp của tôi (và chương trình bắt đầu chạy chính xác). Nhưng tôi đã tự hỏi - là có bất kỳ trường hợp đặc biệt được biết là gây ra lỗi/vấn đề trên x64?

Cảm ơn.

Trả lời

9

Con trỏ yêu cầu nhiều bộ nhớ hơn để biểu thị bằng x64 (gấp đôi số lượng, trên thực tế). Như vậy, bạn sẽ sử dụng nhiều bộ nhớ hơn và quá trình đệ quy sâu có thể gây tràn bộ nhớ trên x64 sớm hơn so với x86. Bạn có thể muốn thử raising the stack limit để giảm thiểu vấn đề này.

+3

Điều này xảy ra một lần trong một công ty tôi làm việc ... dường như tôi là người duy nhất trong tòa nhà có thể giải thích lý do tại sao nó xảy ra ... những năm C trả hết, và họ đã giao 64 bit. –

+0

Cảm ơn nhận xét và liên kết - cả hai đều rất hữu ích. Và có, tăng giới hạn ngăn xếp cũng giúp. – Jefim

Các vấn đề liên quan