Linked list tree and dynamic pointers.

class menu{
  
  public:
  char name[10];
  byte xpos;
  byte ypos;
  //char menuname[10];
  menu** menulist;
  menu* previous_menu;
  double value;
  
    menu(char *mname="", byte y=0, byte x=0){
      
      menulist = new menu*[y];
      
    strcpy(name, mname);
  }
  
 /* ~menu()
  {
    delete [] menulist;
  }*/
};

menu EC_PH("EC PH",1,3);
menu EC("EC ONLY",0,0);

menu* current_menu=&EC_PH;

void setup(){
  Serial.begin(9800);
  Serial.println("STARTING");
  EC_PH.menulist[6]=&EC;
  Serial.println((*current_menu->menulist[6]).name);
}

void loop(){
}

Why does it allow me to assign and dereference an array in position 6 in allocated memory when the array is supposed to be of size 1? Is this just overwriting memory which hasent been dynamically allocated?