Поддержка JavaScript отключена
SBP-Program | |||||
На главную — > C |   | ||||
  |
Для работы с памятью в C используют библиотечные функции: free(), malloc(), calloc(), realloc(). Функция void free(void *pointer);
используется для освобождения памяти, на которую указывает аргумент pointer. Сначала память выделяется для приложения, после завершения работы с памятью её надо вернуть, этим возвратом и занимается функция free. Функция _msize возвращает размер область памяти, выделенной из кучи: size_t _msize (void*);
аргумент — указатель на блок памяти. Функция _msize возврашает размер памяти в байтах. size_t — это unsigned integer. Функция malloc выделяет область памяти из «кучи» (т.е. свободной области памяти): void* malloc(size_t);
аргумент определяет количество байтов, которое надо выделить из памяти. Функция malloc возвращает void указатель на выделенную область памяти, его можно привести к нужному типу. Если свободной для выделения памяти меньше, чем затребовоно в size_t, то функция malloc вернет NULL. Пример работы с функцией malloc: здесь выделено место в памяти для массива, состоящего из двух элементов типа int. Если выделение памяти пошло успешно, то освобождаем эту область памяти с помощью функции free. Получаем: Функция calloc выделяет область памяти и размещает в ней массив, инициализированный нулями: void* calloc(size_t, size_t);
первый аргумент количество элементов, а второй — размер в байтах одного элемента. Произведение значений аргуменов и даст величину области памяти, запрошенной для выделения. Функция calloc возвращает void указатель на выделенную область памяти, его можно привести к нужному типу. Если свободной для выделения памяти меньше, чем затребовоно, то функция calloc вернет NULL. Пример работы с функцией calloc: в примере выделяется память для массива типа int, содержащего два элемента. Эти элементы инициализированны нулями. Если выделение памяти пошло успешно, то освобождаем эту область памяти с помощью функции free. Получаем: Функция realloc меняет размер предварительно выделенной области памяти: void* realloc(void*, size_t);
первый аргумент — это указатель на область памяти, размер которой нужно изменить, второй аргумент определяет новый размер области памяти. Если этот размер равен нулю, а первый аргумент указывает на имеющуюся область памяти, то функция realloc вернет NULL, а исходный блок памяти, на который указывает первый аргумент, будет освобожден. Если свободной для выделения памяти меньше, чем затребовоно, то функция realloc вернет NULL, а исходный блок памяти, на который указывает первый аргумент, сохраниться и останется без изменений. Функция realloc возвращает void указатель на выделенную область памяти, его можно привести к нужному типу. Пример работы с функцией realloc: В примере с помомощью функции malloc выделяем область памяти, далее с помощью функции realloc увеличиваем эту память. Получаем: Программирование |
  | |||
 
|
 
|
||||