Originariamente inviato da alfa_19
domanda da ignorante: ma la matrice allocata così all'interno della funzione, non rimane locale?

se rimanesse locale nel momento in cui la funzione termina questa viene cancellata, quindi il valore di ritorno è un puntatore a qualcosa che non esiste.

Spero di non aver fatto un intervento completamente fuori luogo

Ciao
Di allocato localmente (sullo stack) c'è soltanto il puntatore sigma che viene copiato su un registro al ritorno della funzione. Tutti i dati della matrice si trovano nella memoria heap.