On branch main

modified:   src/ch04.md
modified:   src/ch06.md
modified:   src/ch09.md
This commit is contained in:
zed
2023-11-24 00:00:27 +03:00
parent a66ced3ca4
commit 8bcdef3738
3 changed files with 16 additions and 15 deletions

View File

@@ -10,7 +10,7 @@
использования памяти компьютера. Если вы свободно обращаетесь с
указателями, динамическим выделением/освобождением памяти, понимаете, что
такое "висячий" указатель (dangling pointer), тогда вы можете пропустить
пару глав и перейти к главе 6, там есть некоторые особенности,
пару глав и перейти к Главе VI, там есть некоторые особенности,
специфичные для Zig.
В следующем примере создаётся пользователь с идентификатором 1 и "силой"
@@ -50,7 +50,7 @@ src/ex-ch04-01.zig:16:16: error: cannot assign to constant
~~~~~~~~~~~^~~~
```
Мы уже знаем из главы 1, что параметры функций являются константами
Мы уже знаем из Главы I, что параметры функций являются константами
и поэтому инструкция `user.power += 1;` некорректна. Чтобы исправить
эту ошибку компиляции, мы могли бы написать что-то вроде

View File

@@ -757,16 +757,17 @@ defer list.deinit();
## Распределитель с фиксированным буфером
Последний аллокатор, который мы изучим, это `std.heap.FixedBufferAllocator`,
который выделяет место под объекты в буфере (то есть в `[]u8`), который
ему предоставляется при инициализации. У этого аллокатора есть два главных преимущества.
Во-первых, поскольку память уже выделена заранее, это быстро. Во-вторых,
он естественным образом ограничивает максимальный размер выделяемой памяти,
что, с другой стороны, может считаться недостатком. Другой недостаток
состоит в том, что `free` и `destroy` у этого аллокатора работают только
с последним размещённым объектом (практически, как в стеке).
Попытка удаления не последнего объекта абсолютна безопасна, поскольку
такое удаление просто ничего не делает.
Последний аллокатор, который мы изучим, это
`std.heap.FixedBufferAllocator`, который выделяет место под объекты в
буфере (то есть в `[]u8`), который ему предоставляется при инициализации.
У этого аллокатора есть два главных преимущества. Во-первых, поскольку
память уже выделена заранее, это быстро. Во-вторых, он естественным
образом ограничивает максимальный размер выделяемой памяти, что, с другой
стороны, может считаться недостатком. Другой недостаток состоит в том,
что `free` и `destroy` у этого аллокатора работают только с последним
размещённым объектом (практически, как в стеке). Попытка удаления не
последнего объекта абсолютна безопасна, поскольку такое удаление просто
ничего не делает.
```zig
const std = @import("std");

View File

@@ -424,9 +424,9 @@ pub fn main() !void {
## `anytype`
Мы уже вскользь упоминали `anytype` в первой главе. Такой "тип" это
весьма полезная форма утиной (неявной) типизации во время компиляции.
Вот простой логгер:
Мы уже вскользь упоминали `anytype` в Главе I. Такой "тип" это весьма
полезная форма утиной (неявной) типизации во время компиляции. Вот
простой логгер:
```zig
pub const Logger = struct {