【发布时间】:2014-01-06 04:41:49
【问题描述】:
我有以下代码:
#include <stdio.h>
#include "funcs.h"
void func1(int (*codes)[1296][2]);
void func2(int arr0[]);
void func4(int (*codes)[1296][2],int arr3[]);
int func5(int isValid[]);
void func6(int (*codes)[1296][2],int arr3[],int var0);
void func7(int arr2[]);
void func8(int arr1[],int idx);
void func1()
{
....
}
其中codes 是一个大小为 1296 x 1296 x 2 的 3d 数组。当我尝试编译我的代码时,即使在void func1 之后,我也会得到未处理的异常和堆栈溢出。为什么会这样?如何将codes 发送到我的每个函数?
编辑:我不能使用:
- 除 stdio.h 之外的任何库
- 任何全局或静态变量
据我所知,这就是所有限制。
【问题讨论】:
-
为什么需要这么大的 3D 阵列?问题是完全分配数组。一旦你分配了它,将它传递给函数不是问题,但分配它是。您使用的是哪个系统(哦,评论中提到了 Windows)?您可以增加系统上程序的堆栈大小吗?
-
因为我在写mastermind (4^6=1296)。我正在使用 Windows 7 Professional 64 位。如何增加堆栈大小?
-
我的第一反应是“重新考虑你的算法——你做错了”。目前还不清楚为什么你需要这么多物品。你在用那个数组做什么? (2) 的第三维是什么。说到这里,你在用二次元做什么?
-
我尝试了另一种使用二维数组的方法,但我的系统超时了。
-
4^6 = 4096。使用位(或半字节)而不是整数。
标签: c arrays exception pointers multidimensional-array