New_Monster = new Monster(Monsters[rand()%A_Map->Set.y+A_Map->Set.x]->LBL.c_str(),Skills);
Because you dynamically create this instance and then leave scope, and because it's unlikely that you're calling delete on it, you've just sprung a memory leak. Nice going, champ!
What, exactly, do you feel is so wrong with
Curr_Monsters = &Monsters[rand()%A_Map->Set.y+A_Map->Set.x];
? Why isn't it enough to have the indices to three of your existing monsters (by simply assigning the reference) in Curr_Monster[[0 - 2]]?