ВУЗ:
Составители:
68
6.4.2 Динамическое распределение памяти
В реальных программах часто оказывается сложно заранее
определить , сколько переменных какого типа, или какой размерности
массивы необходимо зарезервировать в тексте программы. Это может
определяться только на этапе выполнения программы, в зависимости от
выбора пользователя программы или от других обстоятельств. Кроме того,
некоторые объекты памяти могут быть нужны только в какой-то момент
работы программы. В других случаях они могут быть бесполезны и лишь
занимать память зря . В таких случаях используется динамическое
распределение памяти.
Динамическое распределение памяти – это когда память под
переменную или массив выделяется в определенный момент времени
работы программы, а не заранее, путем резервирования переменной в
тексте программы. Динамически выделенная память может быть
освобождена в любой момент времени, сразу, как только она становится не
нужна.
Никакая реальная программа обычно не обходится без
динамического распределения (выделения и освобождения ) памяти.
Чтобы динамически выделить память , в языке C необходимо
воспользоваться функцией стандартной библиотеки malloc или calloc. Эти
функции описаны в заголовочных файлах stdio.h или stdlib.h, один из
которых необходимо включить в программу, чтобы пользоваться
динамическим распределением памяти .
Функция malloc имеет один параметр: размер выделяемой области в
байтах. Эта функция находит в памяти компьютера свободный блок
заданного размера и возвращает указатель на него (типа void *). Если
такую область памяти выделить не удается, malloc возвращает NUL. malloc
ничем не заполняет выделенную область памяти , т.е. она содержит
неопределенные значения («мусор» ).
Так как malloc принимает размер в байтах , то при подсчете размера
выделяемой памяти удобно использовать операцию sizeof.
Рассмотрим пример динамического выделения памяти под
структуру :
#include <stdio.h>
68 6.4.2 Динамическое распределение памяти В реальных программах часто оказывается сложно заранее определить, сколько переменных какого типа, или какой размерности массивы необходимо зарезервировать в тексте программы. Это может определяться только на этапе выполнения программы, в зависимости от выбора пользователя программы или от других обстоятельств. Кроме того, некоторые объекты памяти могут быть нужны только в какой-то момент работы программы. В других случаях они могут быть бесполезны и лишь занимать память зря. В таких случаях используется динамическое распределение памяти. Динамическое распределение памяти – это когда память под переменную или массив выделяется в определенный момент времени работы программы, а не заранее, путем резервирования переменной в тексте программы. Динамически выделенная память может быть освобождена в любой момент времени, сразу, как только она становится не нужна. Никакая реальная программа обычно не обходится без динамического распределения (выделения и освобождения) памяти. Чтобы динамически выделить память, в языке C необходимо воспользоваться функцией стандартной библиотеки malloc или calloc. Эти функции описаны в заголовочных файлах stdio.h или stdlib.h, один из которых необходимо включить в программу, чтобы пользоваться динамическим распределением памяти. Функция malloc имеет один параметр: размер выделяемой области в байтах. Эта функция находит в памяти компьютера свободный блок заданного размера и возвращает указатель на него (типа void *). Если такую область памяти выделить не удается, malloc возвращает NUL. malloc ничем не заполняет выделенную область памяти, т.е. она содержит неопределенные значения («мусор»). Так как malloc принимает размер в байтах, то при подсчете размера выделяемой памяти удобно использовать операцию sizeof. Рассмотрим пример динамического выделения памяти под структуру: #include
Страницы
- « первая
- ‹ предыдущая
- …
- 66
- 67
- 68
- 69
- 70
- …
- следующая ›
- последняя »