Alokacje na stosie są szybsze i mniej śmiecą po pamięci, ponieważ używany jest stały obszar pamięci. Dodatkowo alokacja automatycznie znika po wyjściu ze scope jej widoczności.
Minusem jest natomiast ryzyko bufferoverflow(exploity), stack overflow i ogólnie łatwiej o crash. Ogranicza nas również rozmiar alokacji.
Alokacje na stercie nie są ograniczone rozmiarowo(tzn ogranicza nas ram i rodzaj systemu 32, 64 bity), trudniej o exploita w przypadku pisania poza alokacją.
Minusem sterty jest fakt że alokacja jest wolniejsza, mogą prowadzić do fragmentacji pamięci, oraz jej wycieków.
Generalnie, jeżeli jest to bezpieczne i zależy Ci na prędkości/pamięci dodatkowo alokacja jest na krótki czas(widoczność zmiennej) to stosuj alokacje na stosie. W pozostałych sytuacjach sterta.