doc: add book,internal,reference,builtins sections
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
# Модель памяти
|
||||
|
||||
FZLang использует scope-based RAII: объект принадлежит окружению, в котором создан, и освобождается при уничтожении этого окружения.
|
||||
Отдельного сборщика мусора нет.
|
||||
|
||||
## Окружения
|
||||
|
||||
Глобальная программа, функция и каждый блок получают окружение.
|
||||
В нём хранятся имена и значения переменных.
|
||||
При поиске имени VM проверяет текущее окружение, затем внешние.
|
||||
|
||||
После return локальное окружение функции закрывается.
|
||||
Возвращаемый объект переносится в родительское окружение, чтобы пережить этот момент.
|
||||
|
||||
## Владение объектом
|
||||
|
||||
Передача объекта во вложенный вызов позволяет использовать его во внутреннем окружении.
|
||||
Операция `ESCAPE_OBJECT` переносит возвращаемый объект и его дочерние объекты наружу.
|
||||
|
||||
```
|
||||
fn make() Animal
|
||||
{
|
||||
Animal result = new Animal;
|
||||
return result;
|
||||
}
|
||||
```
|
||||
|
||||
Числа, булевы значения и строки хранятся как значения контейнера ВМ.
|
||||
Объектное значение содержит указатель на структуру экземпляра, а поля занимают числовые слоты класса.
|
||||
|
||||
Объект не следует использовать после завершения окружения, которому он принадлежал.
|
||||
Возвращайте его из функции или храните в объекте/окружении с большим временем жизни.
|
||||
|
||||
---
|
||||
|
||||
Назад: [Классы и объекты](./05_classes-and-objects.md)
|
||||
Reference in New Issue
Block a user