начала работы программы под глобальные переменные (до main()) или
статические переменные (static) и освобождается только при завершении программы. Cтатическая память инициализируется случайными значениями. Поскольку область статической памяти выделяется заранее (в момент начала работы программы), она имеет фиксированный размер, что не всегда удобно и оправдано (например, массивы фиксированной длины).Динамическая память (куча- Heap), выделяется явно по запросу программы из ресурсов операционной системы и контролируется указателем. По окончании работы программы, вся затребованная программой динамическая память возвращается ОС.
Особенности динамической памяти:
она не инициализируется автоматически и должна быть явно освобождена;
в отличие от статической памяти динамическая память практически не ограничена (только размером оперативной памяти) и может динамически меняться в процессе работы программы;
поскольку она контролируется указателем, доступ к ней осуществляется несколько дольше, чем для статической памяти;
программист сам должен заботиться о выделении и освобождении памяти, что чревато большим количеством потенциальных ошибок.