Mam nadzieje, że jest to metoda klasy a nie funkcja korzystająca z globalnych zmiennych: tab, licznik, rozmiar
Na pierwszy rzut oka dodajesz do tablicy 2 razy w przypadku gdy jest jeszcze miejsce w tablicy, no i wychodzisz poza zakres przy kopiowaniu:
rozmiar++;
tab = new int[rozmiar];
for (int i = 0; i < rozmiar; i++)
{
tab[i] = pom1[i];
}
gdzie rozmiar zostal juz inkrementowany. Kopiowane powinne być wartości od 0 do rozmiaru starej tablicy.
Móglbyś też zwalniać zapominany blok przy pomocy delete[]
Sugeruje też zmodyfikować tą linijke:
rozmiar++;
bo teraz za każdym razem tworzysz nową tablice. Lepsze byłoby np:
rozmiar *= 2;