Process returned -1073741819 (0xC0000005) when assigning values to struct arrays

-2

Title

#define XY 2
#define XPOS 0
#define YPOS 1
#define MAX_X_COORDINATE 64
#define MAX_Y_COORDINATE 64
#define MAX_FRAME 64

typedef struct
{
    int pos[XY];
    char p;//particle
}particle_t;

typedef struct
{
    int index;
    int offset;
    int delay;
    particle_t particle[MAX_X_COORDINATE][MAX_Y_COORDINATE];
}frame_t;

frame_t frame[MAX_FRAME]={0};

int main()
{
    printf("Loading...\n");
    for(int i=0;i<MAX_FRAME;i++)
    {
        frame[i].index=i;
        frame[i].offset=0;
        frame[i].delay=50;
        for(int j=0;i<MAX_X_COORDINATE;j++)
        {
            for(int k=0;i<MAX_Y_COORDINATE;k++)
            {
                frame[i].particle[j][k].pos[XPOS]=j;
                frame[i].particle[j][k].pos[YPOS]=k;
                frame[i].particle[j][k].p=' ';
            }
        }
    }
    return 0;
}

These three lines:

frame[i].particle[j][k].pos[XPOS]=j;
frame[i].particle[j][k].pos[YPOS]=k;
frame[i].particle[j][k].p=' ';

seemed to cause the problem as removing them made the terminal stop returning 0xC0000005, but it wouldn't return 0 either. It will just stuck without rerurning anything.

The compiler didn't give any error or warning.

c
arrays
struct
asked on Stack Overflow Nov 10, 2019 by palapapa

2 Answers

2
        for(int k=0;i<MAX_Y_COORDINATE;k++)

should be

        for(int k=0; k<MAX_Y_COORDINATE;k++)

That is why always name variable some meaningful and readable name.

answered on Stack Overflow Nov 10, 2019 by kiran Biradar
1

Also

for(int j=0;i<MAX_X_COORDINATE;j++)

Should be

for(int j=0;j<MAX_X_COORDINATE;j++)

You have an infinite loop inside an infinite loop. There is no end condition on the loops because i doesn't change.

Edit: Coincidentally, the return value 0xC00000005 is most like because you are "Overflowing the stack" as it were.

answered on Stack Overflow Nov 10, 2019 by Dr Code Monkey • edited Nov 10, 2019 by Dr Code Monkey

User contributions licensed under CC BY-SA 3.0