Tại sao không khai báo các mảng lớn cục bộ trong C? ví dụ: int a [1000000];Khai báo các mảng lớn cục bộ trong C
Trả lời
Vì chúng được khai báo trên ngăn xếp nếu bạn khai báo cục bộ - và nếu ngăn xếp quá lớn, bạn sẽ bị tràn ngăn xếp và chương trình của bạn sẽ bị lỗi.
vì họ đi vào stack, và chỉ có một số lượng hạn chế của không gian trên stack,
Mặc dù nó có thể điều chỉnh không gian ngăn xếp trước để mức độ nào đó, người ta cũng cần phải xem xét khả năng gọi hàm giống nhau từ đường dẫn thực hiện thông qua hàm. Ví dụ:
void a() { int a[10000000]; b(); }
void b() { d(); c(); }
void c() { a(); }
Do phân tích này không phải lúc nào cũng dễ dẫn đến tràn.
stack là nhỏ (khoảng 4KB) nhưng đống đang có nhiều biến thể kích thước trên máy tính, phân bổ mảng động sử dụng con trỏ đến int malloc(),
được nhận thức của con trỏ và may mắn
Stack và heap có thể là bất kỳ kích thước nào (stack có thể lớn hơn 100 lần so với heap nếu việc cài đặt cấu hình theo cách đó), nhưng nói chung stack là rất nhỏ, và sẽ tràn với phân bổ lớn - đặc biệt là trong các hàm đệ quy.
- 1. OutOfMemoryException khi khai báo mảng lớn
- 2. Khai báo và sử dụng mảng toàn cục C#
- 3. Biến cục bộ Javascript khai báo
- 4. C Khai báo mảng char *
- 5. Khai báo mảng C++ trong tiêu đề
- 6. Cú pháp khai báo mảng C# so với cú pháp khai báo mảng C++
- 7. Java - Khai báo các mảng
- 8. Khai báo và gán mảng C?
- 9. Khai báo mảng Mảng Byte trong Java
- 10. Lập trình C, tại sao khai báo mảng lớn này tạo ra lỗi phân đoạn?
- 11. Làm cách nào để khai báo bộ nhớ cục bộ trong OpenCL?
- 12. khai báo một mảng const int trong C++
- 13. Làm thế nào để khai báo các biến cục bộ trong postgresql?
- 14. Cấu trúc cục bộ trong c
- 15. Sử dụng bộ nhớ rất lớn trong các thông báo
- 16. Bắt một tràn ngoại lệ stack khi khai báo một mảng lớn
- 17. C# khai báo loại mảng lởm chởm ở mặt sau
- 18. Khai báo một mảng byte trong VB.NET
- 19. Tại sao không thể khai báo enums cục bộ trong một phương thức?
- 20. Làm thế nào để khai báo và sử dụng mảng lớn 1 tỷ số nguyên trong C?
- 21. Đề xuất cho các khai báo/trường hợp dữ liệu cục bộ
- 22. Khai báo chuỗi C++
- 23. cách tự động khai báo một mảng các đối tượng với một hàm dựng trong C++
- 24. Có lợi ích nào khi khai báo hằng số trong phạm vi cục bộ trong C# không?
- 25. C - Khởi tạo một mảng toàn cục trong một hàm
- 26. Sự khác nhau giữa khai báo, sắp xếp và biến cục bộ trong Bash
- 27. Cách khai báo biến cục bộ trong mẫu javascript đóng cửa
- 28. C khai báo hàm
- 29. C++ khai báo biến
- 30. Làm thế nào để khai báo "biến" cục bộ như là cuối cùng trong Mục tiêu-C?
Gợi ý: Trang web này được gọi là gì? :) – Joni