С++ оператор 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;



Оставить свой ответ:

Имя:*
E-Mail:
Вопрос:
Skolko buдет пять пдюс сeмь?
Ответ:*
QQpedia21.ru - cамые интересные вопросы