#terminology ## Definition In a running C++ program, memory that is not the [[stack memory]] or [[static memory]] is called free **store memory**. The `new` operator allocates free store memory, and `delete` (for non-arrays) or `delete[]` (for arrays) de-allocates memory. Free store memory is *not* automatically managed in C++. Instead, a C++ programmer must manually allocate and de-allocate free store memory. Forgetting to de-allocate free-store memory can cause a [[memory leak]], a kind of bug that is notoriously hard to find and fix. If you have two or more pointers to the same free store memory, then you can also run into [[dangling pointer|dangling pointers]]. ## Example ```cpp double* p = new double(36.13); // p points to a newly allocated double // on the free store cout << *p; // *p is the double that p points to delete p; // use delete to de-allocate free store memory ```