Оказывается, нельзя использовать NEW на массивах записей без метки (см. тип «M» ниже).
## Код:
```
PROCEDURE Do*;
TYPE
  R = RECORD [untagged] x: INTEGER END;
  M = POINTER TO ARRAY OF R;
VAR m: M;
BEGIN
  NEW(m, 10)
  (* Ошибка: NEW not allowed for untagged structures*)
END Do;
```

Объясните, пожалуйста, почему это считается ошибкой. Ведь R - это записевый тип, размер которого известен в момент компиляции (его же нельзя расширять, т. к. он не помечен словом «EXTENSIBLE», правильно?). То есть R всегда будет занимать 4 байта. Почему же тогда нельзя выделить массив динамически?

Вышел из положения тем, что написал:## Код:
```
POINTER TO ARRAY OF POINTER TO R
```


Почему я вообще написал там [untagged]? Потому что этот тип я должен передавать по ссылке в одну из процедур (SDL_FillRect), при этом VAR-параметр надо пометить директивой [nil], а это возможно только с записями, помеченными как [untagged].