title: A bit confused on exact meaning of dynamic memory allocation for C++
body: <p>I've heard conflicting things concerning the exact meaning of dynamic, and for that matter automatic, memory allocation. I've heard the stack be referred to as both automatic memory allocation and as dynamic memory allocation. I can see both as the stack memory block size is determined before program execution and so it's maximum size cannot grow during runtime. However, during program execution the stack is constantly growing and shrinking as function data is pushed and popped on and off the stack.  </p>
  
  <p>So in that sense isn't this dynamic memory allocation?  </p>
  
  <p>If it is then isn't it confusing to only refer to the heap as being dynamic?  </p>
  
  <p>Can someone help me clarify this?  </p>
  
  <p>Edit: It seems I was confusing certain concepts that I wasn't aware of at the time of this writing. There is a difference between low-level concpets of  stack and heap memory management and high level concepts of the same things in C++. For clarifcation on this please refer to my accepted answer below.</p>