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