Note:
Jon Skeet's Answer is more Correct
Stack memory:
The stack is the section of memory that is allocated for automatic variables within functions.
Data is stored in stack using the Last In First Out (LIFO) method. This means that storage in the memory is allocated and deallocated at only one end of the memory called the top of the stack. Stack is a section of memory and its associated registers that is used for temporary storage of information in which the most recently stored item is the first to be retrieved.
Heap memory
On the other hand, heap is an area of memory used for dynamic memory allocation. Blocks of memory are allocated and freed in this case in an arbitrary order. The pattern of allocation and size of blocks is not known until run time. Heap is usually being used by a program for many different purposes.
The stack is much faster than the heap but also smaller and more expensive.
Example: (Its for C though not C#)
int x; /* static stack storage /
main() {
int y; / dynamic stack storage /
char str; / dynamic stack storage /
str = malloc(50); / allocates 50 bytes of dynamic heap storage /
size = calcSize(10); / dynamic heap storage */
Above content Taken from Here