Суббота, 19.05.2012, 00:44
Приветствую Вас Гость

Сайт факультета ЭВТ ВолгГТУ

Меню сайта
Форма входа
Логин:
Пароль:

Войдите, чтобы не видеть рекламу
Категории раздела
Дополнительно
Реклама


Это интересно...

- Внимание, земля! Говорит борт 13! У нас отказал бортовой компьютер. Что делать?

- Борт 13! Борт 13! Это диспетчер! Слышите меня? Играйте пока на резервном! Играйте на резервном.

Поиск
Наш опрос
Сколько в среднем часов в сутки вы спите во время сессии?
Всего ответов: 390
Статистика

Онлайн всего: 8
Ныкаются: 8
Пользователей: 0
Главная » Файлы » Лекции » Програм-е на ЯВУ [ Добавить материал ]

Динамические структуры данных

[ Скачать с сервера (152.3Kb) - бесплатно ] 12.06.2009, 00:18

Фрагменты из лекции:

Динамические структуры данных – это структуры данных, память под которые выделяется и освобождается по мере необходимости.

Примеры:

Статические структуры данных:
1) массив гласных букв
2) таблица умножения (матрица 9x9)

Динамические структуры данных:
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, если память не выделена. Если новый блок памяти выделяется успешно, то старый освобождается автоматически. Содержимое блока памяти сохраняется, на сколько это возможно.

void free( void *memblock ); - Освобождает память, занимаемую выделенным блоком памяти.


Выделение памяти под динамический массив:
1) На этапе компиляции определяется только указатель на первый элемент массива
2) Выделение памяти происходит на этапе выполнения программы, когда известно, сколько элементов должно храниться в массиве
3) Под массив выделяется непрерывный участок памяти
4) Для выделения памяти используются библиотечныефункции calloc() или malloc()


Похожие материалы

Категория: Програм-е на ЯВУ | Добавил: COBA | Теги: Динамические данные, контейнеры, массивы, программирование, память, ЯВУ, лекции
Просмотров: 1018 | Загрузок: 338 | Рейтинг: 5.0/1 |
Всего комментариев: 0

Имя *:
Email:
Код *:




Рейтинг@Mail.ru Создать сайт бесплатно