Tôi sử dụng Visual Studio 2010
với Code Analysis
được kích hoạt. Trong mã của tôi có một ranh giới phân bổ một số bộ nhớ trong một chức năng:Thông báo cảnh báo về kích thước ngăn xếp
TCHAR someString[40000];
Các phân tích mã ném một thông điệp cảnh báo:
cảnh báo C6262: Chức năng sử dụng '40000' byte của ngăn xếp: vượt quá/phân tích: stacksize'16384 '. Cân nhắc di chuyển một số dữ liệu sang heap
Tôi tự hỏi mình có nên cảnh báo nghiêm túc không. Tôi có phải đối mặt với một số rắc rối thực sự nếu tôi cấp phát một số bộ nhớ trên ngăn xếp> 16384 không? Hay đó chỉ là một thông điệp cảnh báo chung nhắc nhở tôi rằng tôi phải chăm sóc kích thước ngăn xếp của mình nói chung? Theo tôi biết kích thước ngăn xếp mặc định là 1MB (nếu bạn sử dụng Visual Studio).
Tôi không gặp bất kỳ sự cố nào với điều đó – Quest
Nếu chức năng này không sử dụng đệ quy và là hàm duy nhất phân bổ nhiều bộ nhớ ngăn xếp, nó sẽ ổn. Tuy nhiên, bạn có thể muốn xem xét di chuyển nó đến heap, chỉ trong trường hợp. – Kelm
@MichaelXanadu: Có lời giải thích thú vị về điều này trên trang MSDN: http://msdn.microsoft.com/en-us/library/7yhee2f0.aspx .Trên đề xuất trang này đã được đưa ra để sử dụng bộ nhớ heap thô hoặc vùng chứa STL tốt hơn như std :: string std :: vector trong trường hợp này. –