С++ оператор new и delete
Оператор new позволяет динамически выделить область памяти.
переменная-указатель = new тип_переменной;
Так как объем кучи (динамической памяти) может исчерпаться, то при таком случае будет сгенерировано исключение. Если исключение не будет обработано программой, ее выполнение будет прекращено.
Пример использование оператора new :
#include <iostream>
using namespace std;
int main ()
{
int *p; // создаем указатель
p = new int; // выделаем память типа ИНТ
*p = 20; // помещаем в эту область (КУЧИ) памяти значение 20
cout << *p;
delete p; // освобождаем память, но значение еще может оставаться
cout << *p;
return 0;
}
Эта программа присваивает указателю Р адрес (взятый из "кучи") области памяти, который будет иметь размер для хранения целочисленного значения. Затем в эту область помещается число 20. Затем динамически выделенная память освобождается.
Можно сразу инициализировать значением выделяемую динамическую память. В приведенном выше примере две строчки можно сократить в одну:
p = new int (20);
Выделение памяти для массивов
переменная-указатель = new тип [размер];
Здесь переменная-указатель представляет собой адрес, полученный при выделении памяти для массива.
Например следующая программа выделяет память для 10-элементного массива типа double, заполняет значениями от 100 до 109, после чего отображает массив:
#include <iostream>
using namespace std;
int main ()
{
double *p;
p = new double [10];
for (int i=0; i<10; i++) p[i] = i+100.01;
for (int i=0; i<10; i++) cout << p[i] << '\n';
delete [] p;
return 0;
}
Функции malloc() free()
Эти функции выполняют ту же роль, но в языке С.
Для их использования нужен заголовок <cstdlib>
Пример:
int *i;
i = (int *) malloc (sizeof(int);
if (!i) return 1;
*i = 10;
cout << *i;
free (i);
return 0;
Оставить свой ответ: