Да, это должно работать нормально.
Но ... вы можете рассмотреть возможность использования стандартных контейнеров вместо ручного управления памятью:
typedef std::vector<int> IntVec;
typedef std::vector<IntVec> IntGrid;
IntGrid grid(gridSizeX, IntVec(gridSizeY));
grid[0][0] = 20;