-2
 #include <iostream>

 using namespace std;

 int main()
  {int primes[521153];

  return 0;
 }

这适用于任何小于 521153 的数字。这样它就不起作用并返回一个非常大的负数。

4

1 回答 1

2

你已经超出了你的筹码量。C 语言的工作方式类似于“便携式汇编器”,所有语言操作都直接映射到机器操作上,即使这些操作会导致“未定义行为”。在这种情况下,您的堆栈与堆发生冲突,您的程序会覆盖自己的大脑并死掉。

使用int *primes = new int[BIG_NUMBER];IIRC,如果它不能分配那么多内存,它可以很好地引发异常。你的堆(在哪里new获取它的存储)可以任意增长(在现代架构上),而你的堆栈不能。您的 C++ 教程将为您定义所有这些术语。

于 2013-10-16T01:23:49.243 回答