Zwalnianie, nastąpiło automatycznie gdy program się skończył. Nie zawsze trzeba zwalniać [ale trzeba to umieć i robić gdy trzeba]. Gdy program jest bardziej rozbudowany, może jej zabraknąć w pewnym momencie, w kolejnych jego fragmentach - modułach i wtedy trzeba to robić koniecznie, zwalniać nieużywaną i niepotrzebną już pamięć.
for (int i = 0; i < m; i++)
delete[] tab[i];
delete[] tab;