Sto studiando anche io le variabili dinamiche, ma ancora non ho esattamente capito la deallocazione...Cioè,non mi è chiaro cosa fa..
Probabilmente restituisce quei registri di memoria al sistema operativo, senza però alterarne il contenuto: sarebbe una operazione inutile, ti pare??
Quindi alla fine della funzione, array punta ad un'area di memoria deallocata, ma che ancora contiene i valori di quel vettore, ma solo perchè nel frattempo il sistema operativo non ha avuto bisogno di quella memoria..
Diciamo che devi ritenerti fortunato se tutto funziona..

Ho avuto anche io un problema del genere, ma ho deallocato alla fine del main: non credo sia però una soluzione giusta!!
In effetti quando chiamo una fuzione, il programma chiamante dovrebbe strafregarsene di cosa combina il sottoprogramma chiamato!!!

Penso di aver individuato il problema, ma ancora non ho compreso la giust soluzione!!!

Bisogna sbatterci la testa ancora un pò