2013-03-17 65 views

Trả lời

5

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.

6

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,

0

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.

2

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

0

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.

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