C / C ++中大型数组的运行时错误

时间:2016-08-14 09:57:55

标签: c++ c arrays

我试图在C ++中使用声明数组(size = 1,000,000),它给我一个运行时错误。

unsigned long long a[1000000];

但它允许这个(大小= 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];

任何人都可以解释一下这个原因。

1 个答案:

答案 0 :(得分:3)

在C ++中,当你这样做时:

unsigned long long a[100000];

它从堆栈中分配内存。堆栈内存有限,因此您无法进行过大的分配。

执行此操作时:

unsigned long long* a = new unsigned long long[1000000];

它从堆中分配内存。堆分配可能很大。

有关堆栈和堆内存的更多信息,请参阅this Stack Overflow post。