Языки программирования для численных методов. Глушакова Т.Н - 68 стр.

UptoLike

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