我尝试在 C++ 中声明数组 (size=1,000,000),但它给了我一个运行时错误。
unsigned long long a[1000000];
但它允许这样做(size=100,000)
unsigned long long a[100000];
它再次给出以下运行时错误
unsigned long long a[100000];
unsigned long long b[100000];
但我可以做同样的事情如下
unsigned long long* a = new unsigned long long[1000000];
谁能解释一下这其中的原因吗?
最佳答案
在 C++ 中,当你这样做时:
unsigned long long a[100000];
它从堆栈中分配内存。堆栈内存是有限的,因此您不能进行太大的分配。
当你这样做时:
unsigned long long* a = new unsigned long long[1000000];
它从堆中分配内存。堆分配可能很大。
有关堆栈和堆内存的更多信息位于 this堆栈溢出帖子。
关于c++ - C/C++ 中大数组的运行时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38941096/