Questo codice non genera stack overflow con 100000 colonne e 2 righe ...

Dato che allochi dinamicamente devi solo avere la memoria disponibile ... ma non usi lo stack in questo modo.

P.S. Ma tu studi il C o lo subisci ?