Đối với chương trình C++ đang sử dụng hàm đệ quy, làm thế nào tôi có thể đánh giá kích thước ngăn xếp động bị chiếm bởi hàm này?Kích thước kích thước ngăn xếp được ocupied bởi hàm đệ quy
Trả lời
void recursive_function()
{
int dummy;
cout << "stack = " << &dummy << '\n';
...
}
Tăng giá trị sử dụng ngăn xếp tăng lên (hoặc giảm nếu ngăn xếp của bạn tăng xuống).
Hoặc nhảy xung quanh bộ nhớ nếu bạn sử dụng ngăn xếp không tuyến tính. –
OK, ít nhất OP sẽ biết họ có loại ngăn xếp nào. – john
câu trả lời hay nhưng tôi nghĩ rằng '& dummy' đi xuống như tăng kích thước ngăn xếp ... –
#include <stdio.h>
#include <stdlib.h>
ssize_t recurse(int limit, char* stack = NULL)
{
char dummy;
if (stack == NULL)
stack = &dummy;
if (limit > 0)
return recurse(limit - 1, stack);
else
return stack - &dummy;
}
int main(int argc, char* argv[])
{
int limit = atoi(argv[1]);
printf("depth %d took %zd bytes\n", limit, recurse(limit));
return EXIT_SUCCESS;
}
Nếu tôi chạy này với 4
tôi nhận được:
depth 4 took 192 bytes
Như những người khác đã gợi ý trong ý kiến, điều này không hoàn toàn di động, nhưng nó phải làm việc trên một loạt khá rộng của hệ thống hiện tại. Lưu ý rằng kiểu kết quả được ký trong trường hợp một cái gì đó "lạ" xảy ra - bạn chắc chắn có thể kiểm tra nó cho sự tỉnh táo (nói, đảm bảo nó nằm trong khoảng từ 5 đến 500, tùy thuộc vào chức năng của bạn).
- 1. kích thước của ngăn xếp trong VC++ là gì?
- 2. C++ vs2010 tăng kích thước ngăn xếp
- 3. Tăng kích thước ngăn xếp khi biên dịch với mingw?
- 4. Kích thước ngăn xếp tối đa C/C++
- 5. Giới hạn kích thước ngăn xếp Javascript của trình duyệt
- 6. Lỗi tràn ngăn xếp Java - cách tăng kích thước ngăn xếp trong Eclipse?
- 7. Có giới hạn kích thước ngăn xếp của quy trình trong linux
- 8. Android: Tăng kích thước ngăn xếp cuộc gọi
- 9. Đệ quy nhận kích thước của một thư mục
- 10. Tạo ngăn xếp có kích thước cố định
- 11. Sự cố kích thước ngăn xếp hoạt động trên Android?
- 12. Kích thước ngăn xếp của chủ đề an toàn?
- 13. Kích thước ngăn xếp còn lại cho đến khi tràn ngăn xếp xảy ra
- 14. Kiểm tra kích thước ngăn xếp trong C#
- 15. kích thước ngăn xếp luồng trên Windows (Visual C++)
- 16. Làm cách nào để tăng kích thước ngăn xếp cuộc gọi tối đa trong Node.js
- 17. MPI_Recv: Nhận kích thước khác với kích thước được gửi
- 18. Làm thế nào để thay đổi kích thước ngăn xếp cho một chương trình .NET?
- 19. vectơ sắp xếp dựa trên kích thước()
- 20. Kích thước quy trình trên UNIX
- 21. Sắp xếp kích thước nền CSS?
- 22. JSpec - RangeError: Kích thước ngăn xếp cuộc gọi tối đa vượt quá
- 23. Ngăn người dùng thay đổi kích thước cửa sổ/kích thước biểu mẫu
- 24. Tổng bộ nhớ được sử dụng bởi quy trình Java và kích thước heap
- 25. UIImageView: Thay đổi kích thước thành kích thước hình ảnh?
- 26. Lấy kích thước của các kích thước trong mảng
- 27. Ngăn chặn kích hoạt đệ quy trong PostgreSQL
- 28. Làm thế nào để ngăn chặn tràn ngăn xếp bằng cách theo dõi kích thước ngăn xếp?
- 29. Kích thước khối Hadoop và vấn đề kích thước tệp?
- 30. Kích thước ngăn xếp của quá trình trên linux liên quan đến pthread, fork và exec
Chức năng này lặp lại bao nhiêu lần? –
@delnan Nếu số byte chính xác: thì đó là 42. –
Hoàn toàn phụ thuộc vào Phần cứng/Hệ điều hành/Trình biên dịch/Tối ưu hóa. Do đó gần như không thể trả lời được. Và vô nghĩa. Bạn quan tâm làm gì. Nếu thậm chí có khả năng thổi chồng của bạn thì bạn nên sử dụng một giải pháp lặp đi lặp lại. –