Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Динамическое размещение данных



Если в задаче заранее неизвестно количество объектов и объект описан указателем удобно использовать динамическое размещение данных.

Прототипы функций работы с памятью находятся в библиотеке alloc.h, рассмотрим основные из них:

void *calloc(unsigned n, unsigned m); - возвращает указатель на начало области памяти для размещения n элементов по m байт каждый, при неудачном завершении возвращает значение NULL;

void *malloc(unsigned n); - возвращает указатель на блок памяти длиной n байт, при неудачном завершении возвращает значение NULL;

void *realloc(void *bf, unsigned n); - изменяет размер ранее выделенной памяти с адресом начала bf на n байт;

void free(void *bf); - освобождает ранее выделенный блок памяти с адресом bf;

coreleft(void); - возвращает значение объема неиспользованной памяти (тип возвращаемого результата unsigned – для моделей памяти tiny, small, medium; unsigned long – для других моделей памяти).

Пример выделения памяти для массива действительных чисел размером n:

float *x; // Указатель объекта типа float – x[0]

int n; // Количество элементов массива

...

x=(float*)calloc(n,sizeof(float)); // Захват памяти для n элементов

...

free(x); // Освобождение памяти

В С++ введены две операции: захват памяти - new и освобождение захваченной ранее памяти - delete.

Общий формат записи:

указатель = new тип (значение);

...

delete указатель;

Например:

int *a;

a = new int (8);

данном случае создана целочисленная динамическая переменная, на которую установлен указатель a и которой присвоено начальное значение 8. После работы с ней освобождаем память:

delete a;

Операции new для массивов:

указатель = new тип [ количество ];

Результат операции – адрес начала области памяти для размещения данных, указанного количества и типа; при нехватке памяти – NULL.

Операция delete для массивов:

delete [ ] указатель;





Дата публикования: 2014-11-28; Прочитано: 551 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...