While trying to debug a fairly large program, I got a segmentation fault when creating a struct. For this reason I made another c file with a reduced version of the code to see if I could reproduce the crash, and noticed that the crash happens when I create a struct.
Here is the code:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define SIZE 10000
typedef struct {
    char* type;
    char* name;
    int status;
}VARIABLE;
typedef struct {
    char* fun;
    char* t;
    char* args[SIZE];
}FUNCTION;
typedef struct {
    int gf;
    VARIABLE vars[SIZE];
    FUNCTION funs[SIZE];
}COMPILER;
int main(int argc, char** argv) {   
    COMPILER compiler;
    return 0;
}
I solved the issue by substituting
COMPILER compiler;
with
COMPILER* compiler = (COMPILER*)malloc(sizeof(COMPILER));
The only thing that weirds me out is that when I tried to debug the first version of the code with gdb it gave me a segfault at argc and argv, with this message:
0x0000555555555160 in main (
    argc=<error reading variable: Cannot access memory at address 0x7fffd04abc4c>, 
    argv=<error reading variable: Cannot access memory at address 0x7fffd04abc40>)
    at main.c:26
26  int main(int argc, char** argv) {
Why would it give me the segfault here and not at compiler's declaration? I'm not good with C yet and I'm trying to understand how to debug programs better. Thanks in advance
