Para la asignación dinámica de memoria debes usar las instrucciones malloc, calloc y realloc, y esta última para reasignar el espacio de memoria reservada.
para hacer esto, no te compliques mucho. Haz lo siguiente:
si vas a definir una matriz n x m... de enteros
int* iMatriz = new int [ n * m ];
y para acceder a los datos haz lo siguiente:
iMatriz [ a * num +c];
siendo 'a' la fila a acceder, 'c' la columna a acceder y 'num' el numero total de columnas que tiene la matriz que definiste, osea num sera igual a m.
todo esto lo puedes encapsular en una clase matriz, yo tengo una escrita si quieres te la paso.