Tôi sẽ đưa ra câu trả lời của mình từ góc độ lập trình cạnh tranh (cp) , nhưng nó cũng áp dụng cho các lĩnh vực khác.
Nhiều lần trong khi làm cp, các ràng buộc là khá lớn.
Ví dụ : Tôi đã có một câu hỏi với một biến N, M, Q
như vậy 1 ≤ N, M, Q < 10^5
.
Sai lầm tôi đã làm là tôi tuyên bố một 2D nguyên mảng có kích thước 10000 x 10000
trong C++
và phải vật lộn với các SIGABRT
lỗi ở Codechef trong gần 2 ngày.
Bây giờ, nếu chúng ta tính toán:
Kích thước điển hình của một số nguyên: 4 byte
Số ô trong mảng của chúng tôi: 10000 x 10000
Tổng kích thước (tính bằng byte): 400000000 byte = 4 * 10 ^ 8 400 MB
Các giải pháp của bạn cho những câu hỏi như vậy sẽ hoạt động trên PC của bạn (không phải lúc nào cũng vậy) vì nó có thể đủ khả năng cho kích thước này.
Nhưng tài nguyên tại các trang web mã hóa (thẩm phán trực tuyến) bị giới hạn ở vài KB.
Do đó, SIGABRT
lỗi và các lỗi khác như vậy.
Phần kết luận:
Trong các câu hỏi như vậy, chúng ta không nên khai báo một mảng hoặc vectơ hoặc bất kỳ DS nào khác có kích thước này, nhưng nhiệm vụ của chúng ta là làm cho thuật toán của chúng ta hiệu quả đến mức nó hoạt động mà không có chúng (DS) hoặc có ít bộ nhớ hơn.
PS : Có thể có những lý do khác cho lỗi này; ở trên là một trong số họ.