运行窗口显示大小(问题比较low)

发布于 2022-09-01 15:17:42 字数 379 浏览 13 评论 0

#include<iostream>
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,是可以的
是不是有显示限制?
如果是显示限制问题,有没有哪些工具是没有限制的?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

晌融 2022-09-08 15:17:42

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

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

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

#include <iostream>
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...

强辩 2022-09-08 15:17:42

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文