Già se ti vuoi salvare tutta un'area di memoria da una zona in un'altra, tipo la routine sicuramente presente in ogni progetto (anche se nascosta)
/* Copy initialized data from ROM to RAM */
while (n--)
*data_ram++ = *data_rom++;
farlo senza puntatori è un delirio.
Poi da come parli sembra che heap o stack per te siano la stessa cosa.
Ma comunque il puntatore è un indirizzo ad un'area di memoria: in ogni istante sai esattamente dove punta. C'è anche modo di sapere dove stiano in memoria tutte le variabili, registri e funzioni che vuoi, in ogni istante (scoprire come lo lascio a te). Se devi controllare tutto, poi però il codice non finisce più