Setting a 2D array value overwrites another in C

When creating a 2D array and setting the value of some element, other elements get set too, what could be the reason behind such anomaly?

Following is the code example.

#include <stdio.h>

#define MAX_X 240
#define MAX_Y 2

char grid(MAX_X)(MAX_Y);

int main()
{
  int i,j,row,col;

  col = MAX_X;
  row = MAX_Y;

  // Init 2D array
  for (i = 0; i < row; i++) {
    for (j = 0; j < col; j++) {
      grid(i)(j) = '.';
    }
  }

  grid(0)(121) = 'X'; // << (ISSUE HERE) `X` is written into 2 elements instead of 1

  // Display 2D array
  for (i = 0; i < row; i++) {
    for (j = 0; j < col; j++) {
      printf("%c", grid(i)(j));
    }
    printf("n");
  }
}

Note:
Issue showed up on g++, and was reproduced using this snippet on online gdb’s compiler