Tôi vừa hết ngăn xếp tại nơi làm việc, đó là một cơ sở dữ liệu và nó đang chạy một số luồng, về cơ bản nhà phát triển trước đó đã ném một mảng lớn lên ngăn xếp và dù sao thì ngăn xếp cũng thấp. Phần mềm được biên dịch bằng Microsoft Visual Studio 2015.
Mặc dù luồng đã hết ngăn xếp, nó vẫn âm thầm không thành công và tiếp tục, nó chỉ tràn ngăn xếp khi truy cập nội dung của dữ liệu trên ngăn xếp.
Lời khuyên tốt nhất mà tôi có thể đưa ra là không khai báo mảng trên ngăn xếp - đặc biệt là trong các ứng dụng phức tạp và đặc biệt là trong các luồng, thay vào đó hãy sử dụng heap. Đó là những gì nó ở đó;)
Cũng chỉ cần lưu ý rằng nó có thể không thất bại ngay lập tức khi khai báo ngăn xếp, nhưng chỉ khi truy cập. Tôi đoán là trình biên dịch khai báo ngăn xếp dưới các cửa sổ một cách "lạc quan", tức là nó sẽ giả định rằng ngăn xếp đã được khai báo và có đủ kích thước cho đến khi sử dụng nó và sau đó phát hiện ra rằng ngăn xếp không có ở đó.
Các hệ điều hành khác nhau có thể có các chính sách khai báo ngăn xếp khác nhau. Vui lòng để lại bình luận nếu bạn biết những chính sách này là gì.