I'm having a hard time passing a 3D array to a function. I've googled it to death and I think I understand but the code crashes with no output when run. (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");
}
The problem is the following line in
main
That creates a local variable of 16777216 bytes, which overflows the stack. You can correct the problem either by declaring the array
static
or by allocating memory for the array using
malloc
If you choose
malloc
, remember tofree
the memory when you're done with it.PS. there's nothing wrong with the declaration of the
foo
function.You have a stack overflow
that is the reason for the segmentation fault.
If you need such a large ammount of memory you have to use
malloc
.