Quando è meglio usare lo stack invece dell’heap e viceversa?

In C ++, quando è meglio usare lo stack? Quando è meglio usare l’heap?