Axiom Справочник языка

10 · Массивы

Оператор ERASE

Когда элементы массива больше не нужны, занимаемое ими хранилище освобождают оператором ERASE. Имя и объявленный тип при этом сохраняются, поэтому массив остаётся в программе, но переходит в невыделенное состояние.

Синтаксис

Оператор имеет единственную форму с одним массивным аргументом.

ERASE <массив>[]

Массивный аргумент указывает хранилище, которое нужно освободить. Цель должна быть изменяемой переменной массива или доступным массивным полем, записанным с обязательным суффиксом [], например ERASE values[] или ERASE bag.values[]; дополнительных режимов выполнения операция не требует.

Состояние после освобождения

Объявление массива продолжает действовать, а доступных элементов больше нет. До нового REDIM обращение к ним вызывает ошибку. Проверка ARRAYISALLOCATED возвращает FALSE. Фиксированное массивное поле TYPE освобождать нельзя.

Переход между состояниями виден на одном массиве:

DIM values[] AS INTEGER
REDIM values[1 TO 2]
PRINT ARRAYISALLOCATED(values[])
ERASE values[]
PRINT ARRAYISALLOCATED(values[])

Программа выводит:

TRUE
FALSE

После REDIM массив выделен, хотя ни одному элементу значение ещё не присвоено, поэтому первая проверка даёт TRUE. ERASE возвращает массив в состояние объявления без элементов, и вторая проверка даёт FALSE.

Связанный файл проверяет состояние до и после освобождения. Связанные материалы: освобождение массива.

Диагностика

  • MB2011 — цель не является массивом.
  • MB2010 — цель объявлена неизменяемой.
  • MB2025 — цель является фиксированным полем массива в записи TYPE.
  • MB3005 — программа обращается к элементам после освобождения хранилища.

См. также