Динамические структуры данных: 1) список сообщений в Internet-форуме 2) дерево предков и потомков
Статические структуры данных: 1) память выделяется на этапе компиляции 2) размер памяти остается неизменным в процессе работы программы
Динамические структуры данных: 1) память выделяется в процессе работы программы (на этапе компиляции размер занимаемой памяти практически равен нулю) 2) размер памяти меняется в процессе работы программы
Преимущества и недостатки динамических структур данных: Преимущества:
1) размер занимаемой памяти всегда соответствует объему хранимой информации (память то выделяется, то освобождается) 2) объем хранимой информации практически не ограничен
Недостатки: 1) более сложный способ работы с динамическими структурами данных
void *malloc( size_t size ); - Выделяет непрерывный блок памяти размером size байт. Возвращает либо адрес выделенного блока памяти, либо NULL, если память не выделена
void *calloc( size_t num, size_t size ); - Выделяет массив из num элементов размером size байт каждый. Возвращает либо адрес выделенного блока памяти, либо NULL, если память не выделена
void *realloc( void *memblock, size_t size ); - Расширяет или сокращает блок памяти memblock до новых размеров size. Возвращает либо адрес вновь выделенного блока памяти, либо NULL, если память не выделена. Если новый блок памяти выделяется успешно, то старый освобождается автоматически. Содержимое блока памяти сохраняется, на сколько это возможно.
Выделение памяти под динамический массив: 1) На этапе компиляции определяется только указатель на первый элемент массива 2) Выделение памяти происходит на этапе выполнения программы, когда известно, сколько элементов должно храниться в массиве 3) Под массив выделяется непрерывный участок памяти 4) Для выделения памяти используются библиотечныефункции calloc() или malloc()