0Pricing
Zig Academy · Урок

undefined и неинициализированная память

Резервируйте хранилище до появления значения.

«undefined и неинициализированная память» — бесплатный урок Zig Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Zig Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Zig Academy содержит 4 уроков всего.

Сначала зарезервировать место

Иногда нужно выделить память до того, как появится значение для её заполнения. Для этого в Zig есть ключевое слово undefined.

Знакомство с undefined

Запись undefined объявляет привязку, память которой reserved, но пока не содержит осмысленного значения. Вы обещаете заполнить её в ближайшее время.

var buffer: [16]u8 = undefined;

Это обещание

undefined — это обязательство присвоить настоящее значение до чтения. Если прочитать его раньше, Вы получите garbage — неопределённый шаблон битов.

Обычно используется с буферами

Классический пример — фиксированный массив, который Вы собираетесь заполнить. Вы задаёте размер buffer, оставляете его undefined, а затем записываете элементы по одному.

var line: [256]u8 = undefined;

Механизмы безопасности помогают обнаружить ошибку

В режимах Debug и ReleaseSafe Zig заполняет память undefined байтами 0xAA. Этот заметный шаблон помогает обнаружить случайное чтение раньше времени.

Присвойте значение до чтения

Правило простое: всегда write настоящее значение до чтения привязки undefined. Чтение раньше присваивания — это ошибка, которой Zig помогает Вам избежать.

var x: i32 = undefined;
x = 42;

undefined — не null

undefined означает неинициализированную память, а null — намеренно absent значение в optional. Они решают совершенно разные задачи.

Экономия на обнулении

Если оставить большой объём памяти undefined, не придётся тратить время на запись ненужных нулей. Это осознанный выбор в пользу performance, а не небрежность.

Поля тоже могут быть undefined

Поле структуры также может начинаться как undefined, если Вы планируете задать его позже. Суть в честном, явном состоянии uninitialized.

var p: Point = undefined;

Используйте умеренно

Большинство привязок должны с самого начала содержать настоящее значение. Выбирайте undefined только тогда, когда Вам действительно нужно зарезервировать необработанное storage.

Явность лучше скрытых решений

Другие языки могут молча оставлять переменные неинициализированными. Zig делает это explicit, поэтому замысел ясно виден каждому, кто читает код.

Быстрая проверка

Вы пишете var x: i32 = undefined; и читаете x до присваивания. Что Вы сделали?

Итоги

Вы узнали, что undefined резервирует память без значения, часто для буферов. Всегда присваивайте значение до чтения и помните, что это не то же самое, что null. 📦

Часто задаваемые вопросы

Урок «undefined и неинициализированная память» бесплатный?

Да — полный текст урока «undefined и неинициализированная память» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Zig Academy, подпишись на CoddyKit PRO. Курс Zig Academy содержит 4 уроков всего.

Чему я научусь в уроке «undefined и неинициализированная память»?

Резервируйте хранилище до появления значения. Ты практикуешь Zig Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Zig Academy?

Предыдущий опыт не требуется. Zig Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «undefined и неинициализированная память»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Zig Academy?

Да. Каждый урок Zig Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. const для неизменяемых значений
  2. var для изменяемого состояния
  3. Вывод типов и явное указание типов
  4. undefined и неинициализированная память
← Назад к Zig Academy