Si entendí bien la velocidad de acceso sería la misma tanto en el heap como en el stack, pero al momento de reservar espacio en el stack sería mucho más rápido ya que es solo mover el SP (stack pointer) en el heap se manejan listas enlazadas y esto tomaría más tiempo.
Con respecto al tipo de almacenamiento de las variables register lo que hace es decirle al compilador que trate de mantener ésta variable en los registros del procesador ya que será utilizada con mucha frecuencia.
Fuente:
http://stackoverflow.com/questions/161053/c-which-is-faster-stack-allocation-or-heap-allocation
http://stackoverflow.com/questions/578202/register-keyword-in-c
Con respecto al tipo de almacenamiento de las variables register lo que hace es decirle al compilador que trate de mantener ésta variable en los registros del procesador ya que será utilizada con mucha frecuencia.
Fuente:
http://stackoverflow.com/questions/161053/c-which-is-faster-stack-allocation-or-heap-allocation
http://stackoverflow.com/questions/578202/register-keyword-in-c