freeCodeCamp/guide/russian/cplusplus/dynamic-memory-allocation/index.md

4.3 KiB
Raw Blame History

title localeTitle
Dynamic Memory Allocation Динамическое распределение памяти

Распределение динамической памяти в C ++

Что такое динамическое распределение памяти на C ++?

  • Распределение памяти в C ++ относится к памяти, выделенной для переменных, которые вы используете в своей программе.
  • Динамическое распределение памяти - это память, которая привязана к переменным во время выполнения, и объем требуемой памяти также определяется во время выполнения.
  • Эта память исходит из кучи , тогда как нестатические переменные и локальные переменные получают память из стека .
  • В C ++ программист может выполнять выделение памяти вручную и называется распределением динамической памяти .
  • В C можно было выполнять динамическое распределение памяти, используя функции calloc и malloc для выделения памяти и использования свободной функции для де-распределения динамической памяти.
  • В C ++ в дополнение к выше, есть две функции: новые и удаленные для выполнения динамического распределения памяти и де-распределения.

Оператор NEW

  • new оператор может предоставить память программиста из кучи (если доступно). Если память, запрошенная программистом, доступна, то new оператор инициализирует память, а затем возвращает адрес (ссылку) выделенной памяти.
  • Синтаксис
    pointer-variable-type = новый data-type;
    Пример 1: int *ptr = new int;
    Пример 2: int *ptr2 = новый int[10];
    Здесь pointer-variable-type является указателем типа data type . Тип data-type может быть int, char и т. Д. Или определяемым пользователем типом данных.

Оператор DELETE

  • Ответственность программиста заключается в том, чтобы де-распределить динамически выделенную память, иначе память не будет доступна для перераспределения до конца программы.

  • Чтобы освободить память, оператор delete доступен и может быть использован программистом.

  • Синтаксис
    удалить pointer-type-variable;
    Например, чтобы освободить память, выделенную в примере 1 выше, мы вводим:
    delete ptr;
    Аналогично, например, память может быть освобождена:
    delete ptr2 ;

    Утечки памяти

    Утечки вызывают, когда вы не можете освободить динамическую память, которую вы выделили с помощью оператора New в конце вашей программы. Если вы не освободите его с помощью оператора Delete, ваш компьютер будет продолжать создавать новую память в куче каждый раз, когда запускается программа. Это приводит к замедлению работы вашего компьютера, поскольку память не удаляется, а доступная память уменьшается.