0Pricing
Zig Academy · Pelajaran

Antarmuka Pengalokasi

Satu kontrak untuk semua sumber memori.

Antarmuka Pengalokasi adalah pelajaran Zig Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Zig Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Zig Academy mencakup 4 pelajaran total.

Satu Tipe Umum

Setiap allocator di Zig digunakan sebagai satu tipe, std.mem.Allocator. Kode Anda berkomunikasi dengan satu antarmuka tersebut, bukan dengan backend konkret mana pun.

const Allocator = std.mem.Allocator;

Antarmuka, Bukan Kelas

std.mem.Allocator adalah antarmuka kecil: sebuah pointer ditambah tabel fungsi. Ini menjelaskan apa yang dapat dilakukan allocator, bukan allocator mana yang digunakan.

Banyak Backend, Satu Bentuk

Allocator halaman, arena, atau allocator pengujian semuanya menyediakan bentuk yang sama. Mengganti salah satunya dengan yang lain tidak memerlukan perubahan pada kode pemanggil.

Dapatkan Allocator Nyata

Anda mendapatkan allocator konkret, lalu mengambil handle .allocator()-nya untuk meneruskannya sebagai tipe generik std.mem.Allocator.

var gpa = std.heap.GeneralPurposeAllocator(.{}){};
const a = gpa.allocator();

Teruskan ke Bawah

Setelah memiliki allocator, Anda meneruskan nilai tersebut ke fungsi apa pun yang membutuhkan memori. Seluruh program dapat berbagi satu sumber.

try doWork(a);

Allocator Halaman

std.heap.page_allocator meminta memori langsung dari OS. Allocator ini sederhana tetapi kasar, sehingga cocok untuk blok besar atau berumur panjang, bukan blok kecil.

const a = std.heap.page_allocator;

GeneralPurposeAllocator

GeneralPurposeAllocator adalah pilihan sehari-hari dalam build debug. Allocator ini melacak setiap blok dan melaporkan kebocoran serta pembebasan ganda untuk Anda.

Mengapa Antarmuka Membantu

Menulis kode terhadap antarmuka berarti fungsi Anda dapat bekerja dengan allocator apa pun. Kode yang sama dapat berjalan dalam pengujian, pada perangkat tanpa sistem operasi, atau di server.

Fungsi Tinggal Meminta

Sebuah fungsi tidak peduli allocator mana yang diterimanya. Fungsi itu cukup memanggil metode seperti alloc dan free pada std.mem.Allocator yang diberikan kepadanya.

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

Tanpa Allocator Global

Zig tidak memiliki heap global tunggal. Anda menentukan allocator yang digunakan setiap bagian program, sehingga sumber memori tetap terlihat dan berada di tempat yang jelas.

Uji dengan Allocator Berbeda

Dalam pengujian, Anda meneruskan std.testing.allocator. Kodenya sama, tetapi sekarang kebocoran membuat pengujian gagal, membuktikan manfaat antarmuka ini. ✅

Pemeriksaan Singkat

Pikirkan tipe yang digunakan bersama oleh semua allocator Zig.

Ringkasan

Anda telah mempelajari bahwa std.mem.Allocator adalah satu antarmuka untuk banyak backend, sehingga kode yang meminta memori dapat bekerja dengan allocator apa pun yang Anda berikan. 🎯

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Antarmuka Pengalokasi” gratis?

Ya — teks lengkap “Antarmuka Pengalokasi” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Zig Academy, upgrade ke CoddyKit PRO. Kursus Zig Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Antarmuka Pengalokasi”?

Satu kontrak untuk semua sumber memori. Kamu berlatih Zig Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Zig Academy?

Tidak diperlukan pengalaman sebelumnya. Zig Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “Antarmuka Pengalokasi” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Zig Academy ini?

Ya. Setiap pelajaran Zig Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Mengapa Zig Tidak Memiliki Alokasi Tersembunyi
  2. Antarmuka Pengalokasi
  3. alloc, free, create, destroy
  4. Daftar Dinamis dengan ArrayList
← Kembali ke Zig Academy