Array 3D编译但不会运行

时间:2014-08-28 10:45:30

标签: c

当我尝试创建一个简单的3d数组char tmp[256][256][256];时,它会编译但我无法运行它。

我怎样才能做到这一点?

谢谢!

int main()
{
    int tmp[256][256][256];
    getch();
}

那就是它。它不会运行。

2 个答案:

答案 0 :(得分:3)

您遇到了 Stack Overflow 。多么具有讽刺意味!

2 解决方案:

<强> 1 即可。 重写代码并且不要求这么多内存。使用动态内存分配malloc()calloc()free()等。

<强> 2 即可。增加操作系统分配给程序的堆栈内存link

答案 1 :(得分:1)

嘿,你要求256 * 256 * 256 = 16777216字节的块。这个数组在main()方法中声明,它将内存放在堆栈而不是堆上。 因此,尝试在main()之外声明此数组,或使用malloc()函数动态分配内存。它会正常工作。