Форум языка CPP

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Форум языка CPP » ИСПОЛЬЗОВАНИЕ СВОБОДНОЙ ПАМЯТИ » ОСВОБОЖДЕНИЕ ПАМЯТИ, ЕСЛИ ОНА БОЛЬШЕ НЕ НУЖНА


ОСВОБОЖДЕНИЕ ПАМЯТИ, ЕСЛИ ОНА БОЛЬШЕ НЕ НУЖНА

Сообщений 1 страница 2 из 2

1

Как вы знаете, оператор C++ new позволяет вашим программам выделять память динамически во время выполнения. Если вашей программе больше не нужна выделенная память, она должна ее освободить, используя оператор delete. Для освобождения памяти с использованием оператора delete вы просто указываете этому оператору указатель на данную область памяти, как показано ниже:

delete pointer;

Следующая программа DEL_MEM.CPP использует оператор delete для освобождения выделенной с помощью оператора new памяти:

#include <iostream.h>

#include <string.h>

void main(void)

{
   char *pointer = new char[100];
   strcpy(pointer, "Учимся программировать на языке C++");
   cout << pointer << endl;
   delete pointer;
}

По умолчанию, если ваша программа не освобождает выделенную ей память до своего завершения, операционная система автоматически освобождает эту память после завершения программы. Однако если ваша программа использует оператор delete для освобождения памяти по мере того, как она (память) становится ненужной, то эта память вновь становится доступной для других целей (возможно, для вашей программы, которая опять будет использовать оператор new, или для операционной системы).

Второй пример

Следующая программа ALLOCARR.CPP выделяет память для хранения массива из 1000 целочисленных значений. Затем она заносит в массив значения от 1 до 1000, выводя их на экран. Потом программа освобождает эту память и распределяет память для массива из 2000 значений с плавающей точкой, занося в массив значения от 1.0 до 2000.0:

#include <iostreain.h>

void main(void)

{
   int *int_array = new int[1000];
   float *float_array;
   int i;
   if (int_array 1= NULL)

   {
      for (i = 0; i < 1000; i++) int_array[i] = i + 1;
      for (i = 0; i < 1000; i++) cout << int_array[i] << ' ';
      delete int_array;
   }
   float_array = new float[2000];
   if (float_array != NULL)

   {
      for (i = 0; i < 2000; i++) float_array[i] = (i + 1) • 1.0;
      for (i = 0; i < 2000; i++) cout << float_array[i] << ' ' ;
      delete float_array;
   }
}

Как правило, ваши программы должны освобождать память с помощью оператора delete по мере того, как память становится программам не нужна.

0

2


Вы здесь » Форум языка CPP » ИСПОЛЬЗОВАНИЕ СВОБОДНОЙ ПАМЯТИ » ОСВОБОЖДЕНИЕ ПАМЯТИ, ЕСЛИ ОНА БОЛЬШЕ НЕ НУЖНА