gpt4 book ai didi

c - 将多维数组传递给c中的函数会导致堆栈溢出

转载 作者:行者123 更新时间:2023-11-30 15:41:07 24 4
gpt4 key购买 nike

我有以下代码:

#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 之后,也会出现未处理的异常和堆栈溢出。为什么会发生这种情况?如何将代码发送到我的每个函数?

编辑:我不能使用:

  • 除 stdio.h 之外的任何库
  • 任何全局或静态变量

据我所知,这就是所有限制。

最佳答案

int 类型的 1296 x 1296 x 2 元素数组需要略多于 8 MiB 的堆栈,这超出了某些系统所允许的范围。在 Mac OS X (10.9.1) 上,默认堆栈大小为 8 MiB。

要么使用malloc()或其同类之一来分配数组,要么静态分配数组而不是在堆栈上。

关于c - 将多维数组传递给c中的函数会导致堆栈溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20650765/

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