我很难将3D数组传递给函数。我已经用Google搜索了它,我认为我理解但是代码在运行时崩溃而没有输出。 (codeblocks,gcc)
#include <stdio.h>
#include <stdlib.h>
void foo(char (*foo_array_in_foo)[256][256]);
int main()
{
char foo_array[256][256][256];
int line_num = 0;
printf("Hello world!\n");
foo(foo_array);
return 0;
}
void foo(char (*foo_array_in_foo)[256][256])
{
printf("In foo\n");
}
答案 0 :(得分:0)
你有一个堆栈溢出
256*256*256 = 16777216 bytes > STACK_SIZE
这就是分段错误的原因。
如果你需要这么大的内存,你必须使用malloc
。
答案 1 :(得分:0)
问题是main
char foo_array[256][256][256];
这会创建一个16777216字节的局部变量,它会溢出堆栈。您可以通过声明数组static
static char foo_array[256][256][256];
或使用malloc
char (*foo_array)[256][256] = malloc( 256 * 256 * 256 );
if ( foo_array == NULL )
exit( 1 ); // if malloc fails, panic
如果您选择malloc
,请在完成后记住free
内存。
PS。 foo
函数的声明没有错。