Co jest nie tak? Nie mogę się dopatrzeć.
Nic dziwnego skoro masz tendencję do pisania tak mało czytelnego kodu:
for (int i=0;i<kolumny;i++) { tab [i]= new int [kolumny]; }
Crash najprawdopodobniej powstaje przez odwołanie się do miejsca w pamięci do którego nie masz dostępu (mówiąc szczerze tutaj jest trudno o coś innego)