Акции

Скидка до 40% на создание Бизнес-сайта или Интернет-магазина при заключении договора на поддержку и продвижение!
Подробнее

Новости

2013-06-19

Программирование на языке C. Резервирование памяти в куче и компьютерное обслуживание

Существует несколько способов выделения памяти в куче для динамических переменных. Самый распространенный использует библиотечную функцию с именем malloc(), являющимся сокращением от memory allocation. Функция malloc() выделяет в куче заданное количество байтов. Функция возвращает адрес выделенного блока, который обычно присваивается указателю.

Чтобы воспользоваться данной функцией, включите заголовочный файл alloc.li и объявите указатель

#include

• • •

double *v; /* v - указатель на тип double */

Потом вызовите функцию maloc(), задавая в скобках количество байтов для резервирования, и присвойте указателю v значение, возвращаемое функцией. Но сейчас перед вами загадка: сколько байтов вам нужно зарезервировать? Вы можете поискать размер элемента типа double в справочнике, но в целях лучшей переносимости программы используйте оператор sizeof:

v = (double *)malloc(sizeof(double));

Указатель v сейчас адресует блок памяти в куче, точно соответствующий размеру одного значения double. Функция malloc() может отказать, если куча уже заполнена или оставшаяся память не в состоянии вместить требуемое количество байтов. В этом случае malloc() возвращает нуль.

Теперь вы можете разыменовать указатель v, и использовать его как обычную переменную типа double:

*v = 3.14159;

А вот вывод значения, запомненного в куче:

printf("Valeu = %lf", *v);

Для резервирования памяти в куче вместо функции malloc() можно вызвать аналогичную функцию calloc(), прототип которой также объявлен в файле alloc.h. Эта функция работает подобно функции malloc(), но требует два аргумента - количество объектов, которые вы желаете разместить, и размер одного объекта. Используйте calloc() следующим образом:

long *lр;

lp = (long *)calloc(1, sizeof(long));

При этом резервируется память на одно значение long. Чтобы выделить память для 10 значений, вы должны записать:

lp = (long *)caloc(10, sizeof(long)) ;

Кроме этого, функция саllос() устанавливает каждый зарезервированный байт равным нулю.

Вам нужно компьютерное обслуживание? Обращайтесь на сайт dserver.by. Компания Доктор Сервер гарантирует высокое качество и доступные цены на свои услуги.

Источник

Все новости>>

Новости

Все новости...

Полезные материалы

© 2012 VediTa Генеральный партнер компания "НТО ИНТ"

телефон +7 (4752) 48-54-15

создание сайтов в Тамбове

Данный сайт носит информационный характер и ни при каких условиях не является публичной офертой, определяемой положениями Статьи 437 ГК РФ.