Динамические массивы в C++.

Динамическое выделение памяти необходимо для эффективного использования памяти компьютера. В С++ операции new и delete предназначены для динамического распределения памяти компьютера. Операция new выделяет память из области свободной памяти, а операция delete высвобождает выделенную память. Выделяемая память, после её использования должна высвобождаться, поэтому эти операции используются парами. Даже если не высвобождать память явно, то она освободится ресурсами ОС по завершению работы программы.

Создание динамического массива

#include "stdafx.h"
#include <iostream>
using namespace std;

int main()
{
    int num; // размер массива
    cout << "Enter integer value: ";
    cin >> num; // получение от пользователя размера массива

    int *p_darr = new int[num]; // Выделение памяти для массива
    for (int i = 0; i < num; i++) {
        // Заполнение массива и вывод значений его элементов
        p_darr[i] = i;
        cout << "Value of " << i << " element is " << p_darr[i] << endl;
    }
    delete [] p_darr; // очистка памяти
    return 0;
}

Синтаксис выделения памяти для массива имеет вид: указатель = new тип[размер]. В качестве размера массива может выступать любое целое положительное значение.

Операция new создает объект заданного типа, выделяет ему память и возвращает указатель правильного типа на данный участок памяти. Если память невозможно выделить, например, в случае отсутствия свободных участков, то возвращается нулевой указатель, то есть указатель вернет значение 0. Выделение памяти возможно под любой тип данных.

// пример использования операции delete:
delete ptrvalue;
// где ptrvalue – указатель на выделенный участок памяти типа int                 
// delete – операция высвобождения памяти

Использование динамических массивов

Для доступа к динамически выделяемому массиву следует использовать функцию str(). Она имеет следующий прототип:

char *str();

Эта функция «замораживает» массив и возвращает указатель на него. Как только массив заморожен, он не может снова использоваться для вывода данных. Поэтому не следует замораживать массив, пока продолжается запись в него символов. Пример использования динамического массива:

#include <strstrea.h>
#include <iostream.h>
main ()
{
char *p;
ostrstream outs; // динамическое размещение массива
outs << "I like С++ ";
outs << -10 << hex << " ";
outs.setf (ios::showbase);
outs << 100 << ends;
p = outs.str (); /* заморозка динамического буфера и возврат указателя на него */
cout << р;
delete р; // освобождение динамического буфера, созданного ostrstream()
return 0;
}

Если заморозить массив, тогда нужно самостоятельно освободить память при выходе из функции или программы. Однако, если массив не заморожен, память будет освобождена автоматически при уничтожении потока. Можно также использовать динамические массивы с классом strstream, позволяющим как вводить, так и выводить данные в массив.

 
Поделиться в facebook
Facebook
Поделиться в twitter
Twitter
Поделиться в vk
VK
Поделиться в google
Google+
Поделиться в email
Email

Один ответ к “Динамические массивы в C++.”

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Группа в VK

Помощь проекту

Обнаружили опечатку?

Сообщите нам об этом, выделите текст с ошибкой и нажмите Ctrl+Enter, будем очень признательны!

Свежие статьи

Похожие статьи

Локальные и глобальные переменные в С++.

Локальные и глобальные переменные в С++.

Каждая переменная имеет свою область видимости, то есть такую область, в которой можно работать с переменной. За пределами этой области, о данной переменной ничего известно

 
Математические функции в С++

Математические функции в С++

В языке С++ математические функции определены в заголовочном файле <cmath> функции выполняющие некоторые часто используемые математические задачи. Например, нахождение корня, возведение в степень, sin(), cos()

 
Работа с файлами в С++.

Работа с файлами в С++.

Файл – именованный набор байтов, который может быть сохранен на некотором накопителе. Файл имеет уникальное имя, например файл.txt. Для работы с файлами в С++ необходимо

 
Структуры в C++.

Структуры в C++.

Структура – это совокупность переменных, объединенных одним именем, предоставляющая общепринятый способ совместного хранения информации. Объявление структуры приводит к образованию шаблона, используемого для создания объектов структуры.

 

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: