c++ - 运行窗口显示大小(问题比较low)
巴扎黑
巴扎黑 2017-04-17 12:00:41
0
2
607
#include using namespace std; int main(){ int array[5000000]; for(int i = 0; i < 5000000; i++) { array[i] = i; cout << array[i] << " "; } return 0; }

用的是Dev c++
要显示从1到5000000
运行窗口什么都不显示,并且弹出窗口已停止工作的提示窗口
但是如果显示1到500,是可以的
是不是有显示限制?
如果是显示限制问题,有没有哪些工具是没有限制的?

巴扎黑
巴扎黑

reply all (2)
洪涛

超过数组初始化最大长度了吧。这么大的数组用new动态分配

补充:
因为初始化的时候,内存分配是在栈上,栈的空间一般较小。所以初始化的数组稍微大一些就会stack overflow。但是在动态分配的时候,实在堆上分配内存,堆空间一般比较大,所以可以完成题主的需要。

综上,代码改成如下的样子,就可以正常运行:

#include  using namespace std; int main(){ // int array[5000000]; int* array = new int[5000000]; for(int i = 0; i < 5000000; i++) { array[i] = i; cout << array[i] << " "; } cout << "end" << endl; delete[] array; // 不要忘记清理动态分配内存 return 0; }

参考链接:
http://stackoverflow.com/questions/1847789/segmentation-fault-on-large...

    伊谢尔伦

    C/C++分为局部变量和全局变量。
    全局变量在int main()主函数之外声明。
    你把array[5000000];放在主函数上就OK

      Latest Downloads
      More>
      Web Effects
      Website Source Code
      Website Materials
      Front End Template
      About us Disclaimer Sitemap
      php.cn:Public welfare online PHP training,Help PHP learners grow quickly!