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

标签 c++ c arrays

我尝试在 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/

相关文章:

c++在同一类的另一个构造函数中调用构造函数

c++ - 如何检测圣诞树?

c - 段错误,尽管代码从未执行?

c - 使用 CubeMX 的 STM32F0 USB CDC_Init_FS() 和 CDC_Receive_FS()

javascript - 尝试访问对象时在非对象上调用未捕获的 TypeError : Object. 键

c++ - 是否可以创建一个完整的 DOS 应用程序在 Windows 7 和 8 中运行

iPhone 应用程序中来自 SpeakHere 的 C++

C++地址值和sizeof

php - Laravel 填充数组元素的验证规则

ruby-on-rails - 如果有条件,从 ruby​​ 数组中获取值