La memoria viene allocata nello stack se la dichiarazione avviene all'interno del main, ad esempio con

lond a[DIM];

E' meglio usare l'heap con la new ...