Explain the key differences between stack memory and heap memory, and how they are utilized during program execution.