爲什麼不好用C本地聲明巨大的數組?例如:int a [1000000];聲明巨大的數組局部用C
6
A
回答
5
因爲他們堆棧上宣佈,如果你在本地聲明他們 - 如果堆棧變得太大,你將有一個堆棧溢出和程序將會崩潰。
6
,因爲他們去到堆棧,並且只有在堆棧上的空間有限,
0
雖然有可能提前調整堆棧空間在一定程度上,人們還需要考慮的可能性通過函數從執行路徑調用相同的函數。例如:
void a() { int a[10000000]; b(); }
void b() { d(); c(); }
void c() { a(); }
由於此分析不總是直截了當,它可能導致溢出。
2
堆棧小(約4kb的),但堆具有機器上更尺寸變型中,使用動態 指針爲int的malloc()分配陣列,
知道指針和好運的
0
棧和堆可以是任意大小(堆棧可以比堆大了100倍,如果實現配置它的方式),但一般堆棧非常小,並且將與大的分配溢出 - 尤其是在遞歸函數。
相關問題
- 1. 聲明一個巨大的動態數組與細胞[C++]
- 2. 巨大的bitarray /位圖聲明在C
- 3. 聲明和使用全局數組c#
- 4. 如何聲明一個巨大的常量數組
- 5. 在C++中聲明大字符數組
- 6. C#聲明數組
- 7. 2D char數組的全局和局部聲明
- 8. c#數組聲明語法vs C++數組聲明語法
- 9. C++到C#數組聲明
- 10. 外部函數局部聲明
- 11. C:定義用戶可聲明其大小的全局數組變量
- 12. 數組大小聲明
- 13. C++聲明不知道大小的數組數組
- 14. 如何在C++中聲明不同大小的數組數組?
- 15. C++指針數組聲明
- 16. C#隱式數組聲明
- 17. C#來聲明數組
- 18. C-聲明char數組
- 19. C++數組聲明問題
- 20. C#使用逗號的數組聲明
- 21. C++:「外部引用」聲明
- 22. 聲明一個函數內部的全局對象(C++)
- 23. 函數內部的C++數組參數沒有聲明
- 24. 如何在全局數組聲明中聲明sysconf返回值?
- 25. C++全局對象聲明
- 26. 在PHP中聲明全局數組
- 27. 在awk中全局聲明數組
- 28. 一次聲明一個全局數組
- 29. Javascript數組不全空聲明全局
- 30. 如何全局聲明一個數組
提示:什麼叫這個網站嗎? :) – Joni 2013-03-18 00:27:56