C++ C样式数组大小限制

C++ C样式数组大小限制,c++,arrays,C++,Arrays,我正在尝试创建一个大小为800的二维整数数组 这是我的代码: #include <iostream> int main() { int array[800][800]; std::cout << 1; } 我的问题是它从不打印1。我使用g++作为我的编译器,所以它可能与它的内部工作有关 此外,我在网上找不到任何地方说除了2^32和c样式数组的大小之外还有其他限制。 当我尝试创建一个大小为700它的作品只是罚款 有人知道这个限制在哪里生效,我如何克服它吗

我正在尝试创建一个大小为800的二维整数数组

这是我的代码:

#include <iostream>
int main()
{
    int array[800][800];
    std::cout << 1;
}
我的问题是它从不打印1。我使用g++作为我的编译器,所以它可能与它的内部工作有关

此外,我在网上找不到任何地方说除了2^32和c样式数组的大小之外还有其他限制。 当我尝试创建一个大小为700它的作品只是罚款

有人知道这个限制在哪里生效,我如何克服它吗

有人知道这个限制是从哪里来的吗

它来自于语言实现。在嵌入式系统上,可用于自动存储的空间通常限制在1兆或几兆字节以内,并且该空间与同一执行线程上的所有自动变量共享

由于该内存区域称为堆栈,因此您遇到的崩溃称为堆栈溢出

我怎样才能克服它

对大型对象使用动态或静态存储,而不是自动存储

有人知道这个限制是从哪里来的吗

它来自于语言实现。在嵌入式系统上,可用于自动存储的空间通常限制在1兆或几兆字节以内,并且该空间与同一执行线程上的所有自动变量共享

由于该内存区域称为堆栈,因此您遇到的崩溃称为堆栈溢出

我怎样才能克服它


对于大型对象,请使用动态或静态存储,而不是自动存储。

限制是可用内存。您要求堆栈上的800x800=640000整数。如果我在堆上做这件事,我会被清除吗?不同的站点,但它适合:@HerrFlick是的,堆通常只受实际内存的限制,即使这样,在你真正得到std::bad\u alloc异常之前,可能还涉及到交换光盘。一个例外是32位应用程序,它仅限于4GB@Quimby谢谢我将改为使用堆,虽然最初我更喜欢堆栈,因为我知道它比堆分配快。限制是可用内存。您要求堆栈上的800x800=640000整数。如果我在堆上做这件事,我会被清除吗?不同的站点,但它适合:@HerrFlick是的,堆通常只受实际内存的限制,即使这样,在你真正得到std::bad\u alloc异常之前,可能还涉及到交换光盘。一个例外是32位应用程序,它仅限于4GB@Quimby谢谢我将使用堆,虽然最初我更喜欢堆栈,因为我知道它比堆分配快。我在fedora 64位上有16GB的ram。为什么对我来说效果很好?@AKL键入ulimit-a并检查堆栈大小。它可能足够大,可以处理数据。@AKL为什么它对我来说很好?示例阵列大约为2兆字节。这符合某些语言实现的默认堆栈大小,但不适用于其他语言实现。也许你的系统有一个更大的堆栈。另一方面,不幸的是,堆栈溢出也不能保证程序崩溃。@eerorika是的,可能soI在fedora 64位上有16 GB的ram。为什么对我来说效果很好?@AKL键入ulimit-a并检查堆栈大小。它可能足够大,可以处理数据。@AKL为什么它对我来说很好?示例阵列大约为2兆字节。这符合某些语言实现的默认堆栈大小,但不适用于其他语言实现。也许你的系统有一个更大的堆栈。另一方面,很不幸,堆栈溢出也不能保证程序崩溃。@eerorika是的,可能是这样