gpt4 book ai didi

c++ - 这些二维数组 (C++) 是否耗尽了内存?

转载 作者:行者123 更新时间:2023-11-27 23:24:29 24 4
gpt4 key购买 nike

程序的主要功能是(后面省略了一些额外的代码):

int main() {
cout << "FIRST LINE";
int fract[501][501];
int rfract[501][501];
int nufract[501][501];
int nurfract[501][501];
int snufract[501][501];
int snurfract[501][501];
system("PAUSE");
return 0;
}

有趣的是,如果我只有前 2 个数组,程序运行良好,但如果我有其他 4 个数组中的任何一个(即使只有其中一个),程序在启动时崩溃。我使用的是 4 GB RAM 的计算机,但我没有收到任何有用的错误消息,尽管这似乎就是问题所在。如果我将所有这些的大小更改为 [101][101](从 ~1.2 MB 到 ~50kB),问题就解决了,但我没有足够的空间来输入函数。有办法解决这个问题吗?

最佳答案

堆栈的大小比堆的大小小得多。用 newmalloc 分配的任何东西都在堆上,但如果你不小心的话,你可以非常非常快地填满堆栈。

适合给定的网站,您可能会得到一个包含如此多大型数组的 Stack Overflow。

为此,请尝试以下代码:

#include <iostream>

int main(int argc, char* argv[])
{
int sarr2d[5][10];
typedef int dimension[10];
dimension* arr2d = new dimension[5];

for(int i = 0; i < 5; i++)
{
for(int j = 0; j < 10; j++)
{
sarr2d[i][j] = i*j;
}
}

for(int i = 0; i < 5; i++)
{
for(int j = 0; j < 10; j++)
{
arr2d[i][j] = i*j;
}
}

// print it out
for(int i = 0; i < 5; i++)
{
for(int j = 0; j < 10; j++)
{
std::cout << arr2d[i][j] << " ";
}
std::cout << "\n";
}

delete [] arr2d;
return 0;
}

这是受到问题 C++ Multi-dimensional Arrays on the Heap 的启发

关于c++ - 这些二维数组 (C++) 是否耗尽了内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10359609/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com