Когда программа загружаеться в память, она выделяет место под все объекты, размер которых заренее известен. Бывают случаи, когда размер объекта заранее неизвестен (например, считывание данных из БД), тогда нужна работа с динамической памятью (ос выделяет место в ОЗУ в ходе выполнения программы).
Для управления динамическим выделением памяти используется ряд функций, которые определены в заголовочном файле stdlib.h