C++ 这适用于任何小于521153的数字。这样它就不工作了,返回一个非常大的负数 #包括 使用名称空间std; int main() {int素数[521153]; 返回0; }

C++ 这适用于任何小于521153的数字。这样它就不工作了,返回一个非常大的负数 #包括 使用名称空间std; int main() {int素数[521153]; 返回0; },c++,arrays,size,limit,C++,Arrays,Size,Limit,这适用于任何小于521153的数字。这样它就不工作了,返回一个非常大的负数 您已超出堆栈大小。C语言的工作方式类似于“可移植汇编程序”,所有语言操作都直接映射到机器操作上,即使这些操作导致“未定义的行为”。在这种情况下,堆栈与堆发生冲突,程序会覆盖自己的大脑并死亡 使用int*primes=newint[BIG_NUMBER]IIRC,这是一个定义良好的异常,如果它不能分配那么多内存,就会引发异常。而您的堆(新的获得其存储)可以任意增长(在现代体系结构上),而堆栈则不能。你的C++教程将为你定义

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

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


使用
int*primes=newint[BIG_NUMBER]IIRC,这是一个定义良好的异常,如果它不能分配那么多内存,就会引发异常。而您的堆(新的
获得其存储)可以任意增长(在现代体系结构上),而堆栈则不能。你的C++教程将为你定义所有这些术语。< /P> 521153是质数。您真的要声明一个50万整数的数组吗?这似乎是Eratosthenes筛的标志数组。为什么要使用
int
?在没有任何附加逻辑的情况下,您至少可以使用
char
数组。但是您应该真正使用
std::vector
。因为您建议的是
new[]
,所以快速提及相应的
delete[]
call.yup可能会有所帮助。这就是为什么“阅读教程”的问题在技术论坛上很糟糕,因为在这里复制教程会拖累论坛。。。
 #include <iostream>

 using namespace std;

 int main()
  {int primes[521153];

  return 0;
 }