Операторы malloc и free.

Оператор malloc выделяет необходимое число байт памяти под переменные, а free её освобождает.

Формат:

имя_указателя=(тип_указателя)malloc(количество_выделенных байт)

Формат: free(имя_указателя);

Пример:

int *n; //объявление указателя

n=int malloc(2); //выделение памяти

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

Пример программы. Выделение памяти под строку символов.

#include<stdio.h>

#include<string.h>

#include<alloc/h>

void main(void)

{char *str;

str=(char *) malloc(10); //выделение памяти под строку символов

strpy(str,”Privet”); //присваивание значений

printf(“Строка это %s\n”, str);

free(str);

}

Операторы new и delete.

Формат:

переменная_указатель=new тип переменной (инициализированное значение);

Delete переменная указатель;

Здесь переменная указатель является указателем типа тип переменной. Операторы new выделяет память для хранения значения типа тип переменной и возвращает её адрес. С помощью new могут быть размещены любые типы данных. Оператор delete освобождает память, на которую указывает переменная указатель. Если операция выделения памяти не может быть выполнена, то оператор new генерирует исключение типа xalloc. Если программа не прехватит это исключение, то она будет снята с выполнения. Хотя для коротких программ такое поведение по умолчанию является удовлетворительным, для реальных прикладных программ обычно требуется перехватить исключение и обработать его соответствующим образом. Для того чтобы отделить это исключение необходимо включить заголовочный файл <except.h>

Пример. В данной программе блок try/catch отслеживает ошибки выделения памяти.

#include<iostream.h>

#include<except.h>

int main()

{int *p;

try {

p=new int; // выделение памяти для int

}catch(xalloc xa)

{

cout<<”размещение невозможно\n”;

return 1;

}

*p=20; // присваивает данному участку памяти значение 20

cout<<*p; //демонстрирует результаты путём вывода значений

delete h; //освобождает память

return 0;

}

Эта программа присваивает переменной р адрес блока памяти, имеющего достаточный размер для того, чтобы содержать число целого типа, далее этой памяти присваивается значение 20 и содержимое памяти выводится на экран. Динамически выделенная память освобождается.

Пример инициализации памяти с помощью указателя new. В данной программе память, на которую указывает указатель р, инициализирует значение 99.

#include<iostream.h>

#include<except.h>

int main()

{int *p;

try{

p=new int(99); // инициализация 99

}catch (xalloc x) {

cout <<”размещение невозможно\n”;

return 1;

}

cout <<*p;

delete p;

return 0;

}








Дата добавления: 2016-04-14; просмотров: 641;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.004 сек.