On branch main
modified: src/ch04.md modified: src/ch06.md modified: src/ch09.md
This commit is contained in:
@@ -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;` некорректна. Чтобы исправить
|
||||
эту ошибку компиляции, мы могли бы написать что-то вроде
|
||||
|
||||
|
||||
21
src/ch06.md
21
src/ch06.md
@@ -757,16 +757,17 @@ defer list.deinit();
|
||||
|
||||
## Распределитель с фиксированным буфером
|
||||
|
||||
Последний аллокатор, который мы изучим, это `std.heap.FixedBufferAllocator`,
|
||||
который выделяет место под объекты в буфере (то есть в `[]u8`), который
|
||||
ему предоставляется при инициализации. У этого аллокатора есть два главных преимущества.
|
||||
Во-первых, поскольку память уже выделена заранее, это быстро. Во-вторых,
|
||||
он естественным образом ограничивает максимальный размер выделяемой памяти,
|
||||
что, с другой стороны, может считаться недостатком. Другой недостаток
|
||||
состоит в том, что `free` и `destroy` у этого аллокатора работают только
|
||||
с последним размещённым объектом (практически, как в стеке).
|
||||
Попытка удаления не последнего объекта абсолютна безопасна, поскольку
|
||||
такое удаление просто ничего не делает.
|
||||
Последний аллокатор, который мы изучим, это
|
||||
`std.heap.FixedBufferAllocator`, который выделяет место под объекты в
|
||||
буфере (то есть в `[]u8`), который ему предоставляется при инициализации.
|
||||
У этого аллокатора есть два главных преимущества. Во-первых, поскольку
|
||||
память уже выделена заранее, это быстро. Во-вторых, он естественным
|
||||
образом ограничивает максимальный размер выделяемой памяти, что, с другой
|
||||
стороны, может считаться недостатком. Другой недостаток состоит в том,
|
||||
что `free` и `destroy` у этого аллокатора работают только с последним
|
||||
размещённым объектом (практически, как в стеке). Попытка удаления не
|
||||
последнего объекта абсолютна безопасна, поскольку такое удаление просто
|
||||
ничего не делает.
|
||||
|
||||
```zig
|
||||
const std = @import("std");
|
||||
|
||||
@@ -424,9 +424,9 @@ pub fn main() !void {
|
||||
|
||||
## `anytype`
|
||||
|
||||
Мы уже вскользь упоминали `anytype` в первой главе. Такой "тип" это
|
||||
весьма полезная форма утиной (неявной) типизации во время компиляции.
|
||||
Вот простой логгер:
|
||||
Мы уже вскользь упоминали `anytype` в Главе I. Такой "тип" это весьма
|
||||
полезная форма утиной (неявной) типизации во время компиляции. Вот
|
||||
простой логгер:
|
||||
|
||||
```zig
|
||||
pub const Logger = struct {
|
||||
|
||||
Reference in New Issue
Block a user