cpp

Динамическое выделение памяти

Поместить данные в динамической памяти позволяет глобальная функция new(). Формат функции:

new(Type) *Type

В качестве параметра указывается тип данных. Функция возвращает указатель на выделенный участок памяти со значением по умолчанию для типа. Пример:

n := new(int)
fmt.Printf("%T\n", n) // *int
fmt.Println(*n)       // 0
*n = 10
fmt.Println(*n)       // 10

Опытный читатель наверняка заметил, что мы выделяем динамическую память, но при этом никак явным образом память не освобождаем. Не будет ли здесь утечки памяти? Нет, не будет! Дело в том, что язык Go содержит встроенный сборщик мусора, который автоматически освободит динамическую память как только на нее никто не будет ссылаться. В большинстве случаев это очень удобно. Однако следует понимать, что на период сборки мусора выполнение программы прерывается. Это может оказаться критическим фактором для систем реального времени.

Учебник Go (Golang)
Учебник Go (Golang) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов

cpp