我有下面的代码:传递多维数组的C函数导致堆栈溢出
#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.当我尝试编译我的代码,我得到,即使在void func1
之后,未处理的异常和堆栈溢出。为什么会发生?我如何将codes
发送给我的每个功能?
编辑:我不能使用:
- 任何库除stdio.h中
- 任何全局或静态变量
那据我知道的所有限制。
为什么你需要一个3D数组?问题是根本得不到数组。一旦你分配了它,把它传递给函数不是一个问题,但分配它就是了。你在哪个系统上(哦,Windows在评论中被提及)?你可以增加系统中程序的堆栈大小吗? –
,因为我正在写主谋(4^6 = 1296)。我正在使用Windows 7专业64位。我如何增加堆栈大小? –
我的直接反应是“重新思考你的算法 - 你做错了”。这很不明确你为什么需要这么多项目。你在做什么? (2)的第三个维度是什么?来吧,你在做第二个维度是什么? –