русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Операции new и delete


Дата добавления: 2015-01-16; просмотров: 737; Нарушение авторских прав


В языке С++ для захвата и освобождения памяти используется более простой механизм – операции new и delete. Рассмотрим эти операции на простых примерах:

1) type *p = new type (значение); – захват участка памяти размером sizeof(type), путем установки на него указателя, и запись в эту область указанного значения;

. . .

delete p; – освобождение захваченной памяти.

2) type *p = new type[n]; – захват памяти на n последовательно размещенных объектов, возвращает указатель на начало участка ОП размером n*sizeof(type); используется для создания массива;

. . .

delete []p; – освобождение всей захваченной памяти.

Следует заметить, что операция delete не уничтожает значения, находящиеся по указанным адресам, а дает компилятору разрешение использовать ранее занятую память в дальнейшем.

Квадратные скобки в операции delete [ ] при освобождении памяти, занятой массивом, обязательны. Их отсутствие может привести к непредсказуемым результатам.

 

Пример создания одномерного динамического массива

Для примера приведем участок кода программы для одномерного динамического массива с использованием операций new и delete.

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

¼

double *x;

int i, n;

puts(" Введите размер массива: ");

scanf(“%d”, &n);

x = new double [n] ;

if (x = = NULL) {

puts(" Ошибка ! ");

return;

}

for (i=0; i<n; i++) // Ввод элементов массива

scanf(“%lf”, &x[i]);

¼ // Обработка массива

delete [ ]x; // Освобождение памяти

¼

Пример создания двухмерного динамического массива

Напомним, при создании двухмерного динамического массива сначала выделяется память на указатели, расположенные последовательно друг за другом, а затем каждому из них выделяется соответствующий участок памяти под элементы.



. . .

int **m, n1, n2, i, j;

puts(" Введите размеры массива (строк, столбцов): ");

scanf(“%d%d”, &n1, &n2);

m = new int*[n1]; // Захват памяти для указателей – А (n1=3)

for (i=0; i<n1; i++) // Захват памяти для элементов

*(m+i) = new int[n2];

for ( i=0; i<n1; i++)

for ( j=0; j<n2; j++)

m[i] [j] = i+j; // *(*(m+i)+j) = i+j;

. . .

for ( i=0; i<n1; i++) // Освобождение памяти

delete []m[i];

delete []m;

. . .

 

 



<== предыдущая лекция | следующая лекция ==>
Использование манипуляторов | Параметры со значениями по умолчанию


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.99 сек.