0Pricing
Zig Academy · Урок

Распределитель для тестирования обнаруживает утечки

Автоматически обнаруживайте ошибки работы с памятью.

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

Части этого урока еще не переведены и отображаются на английском.

Memory Bugs Are Sneaky

A program can pass every value check yet still leak memory by forgetting to free it. Zig gives tests a tool to catch exactly that.

Meet testing.allocator

Inside a test you get a special allocator at std.testing.allocator. Use it anywhere your code needs to allocate heap memory.

const a = std.testing.allocator;

It Tracks Every Allocation

The testing.allocator remembers every block it hands out. When the test ends it checks whether each one was given back.

A Leak Fails the Test

If even one allocation is never freed, the testing.allocator reports a leak and the test fails, pointing you at the missing free.

Allocate in a Test

Ask the allocator for memory just like in real code. Here alloc reserves a buffer of ten bytes that you must release later.

const buf = try a.alloc(u8, 10);

Free with defer

Pair each allocation with a defer that frees it. The cleanup is scheduled immediately, so it runs even if the test fails partway.

const buf = try a.alloc(u8, 10);
defer a.free(buf);

Forget free, Catch the Bug

Drop that defer and the test fails with a leak report. This is how the allocator turns a silent bug into a loud, fixable failure.

It Also Spots Double-Frees

The same checked allocator catches freeing the same block twice or freeing memory it never gave you, which are classic crashes.

Pass It Into Your Code

Functions that allocate take an allocator parameter. In a test, hand them testing.allocator so their memory is tracked too.

const list = try buildList(std.testing.allocator);

Clean Up What You Build

Whatever your function allocated, the test must release. Add a defer right after the call to free or deinit the returned data.

defer list.deinit();

Free Memory Testing

Because leaks fail the build, every passing test proves its memory was balanced. That confidence is unique to testing.allocator.

Quick Check

You run a test that allocates with std.testing.allocator but never frees the buffer. What happens?

Recap

You used std.testing.allocator to catch leaks and double-frees for free. Pair each alloc with a defer free and your tests stay clean. ✅

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

Урок «Распределитель для тестирования обнаруживает утечки» бесплатный?

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

Чему я научусь в уроке «Распределитель для тестирования обнаруживает утечки»?

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

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

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

Сколько времени занимает урок «Распределитель для тестирования обнаруживает утечки»?

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

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

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

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

  1. Написание блоков test
  2. Проверки с помощью std.testing
  3. Распределитель для тестирования обнаруживает утечки
  4. Запуск и фильтрация тестов
← Назад к Zig Academy