Zig Academy · Pelajaran

Antara Muka Pengagih

Satu kontrak untuk semua sumber memori.

Pelajaran 2 daripada 413 langkah

Antara Muka Pengagih ialah pelajaran Zig Academy percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Zig Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Zig Academy merangkumi sejumlah 4 pelajaran.

Satu Jenis Lazim

Setiap allocator dalam Zig dikendalikan sebagai satu jenis tunggal, std.mem.Allocator. Kod anda berinteraksi dengan satu interface itu sahaja, bukan dengan backend konkrit.

const Allocator = std.mem.Allocator;

Satu Interface, Bukan Class

std.mem.Allocator ialah interface kecil: satu penuding serta satu jadual fungsi. Ia menerangkan perkara yang boleh dilakukan oleh sesuatu allocator, bukan allocator yang digunakan.

Banyak Backend, Satu Bentuk

Allocator halaman, arena atau allocator ujian semuanya mendedahkan bentuk yang sama. Menukar satu dengan yang lain tidak memerlukan sebarang perubahan pada kod yang memanggilnya.

Dapatkan Allocator Sebenar

Anda mendapatkan allocator konkrit, kemudian mengambil pemegang .allocator() daripadanya untuk dihantar sebagai jenis std.mem.Allocator generik.

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

Hantarkannya ke Bawah

Selepas anda memegang allocator, hantarkan nilai itu kepada mana-mana fungsi yang memerlukan memori. Seluruh program boleh berkongsi satu sumber.

try doWork(a);

Allocator Halaman

std.heap.page_allocator meminta memori terus daripada OS. Ia ringkas tetapi kasar, jadi sesuai untuk blok besar atau yang tahan lama, bukan blok kecil.

const a = std.heap.page_allocator;

GeneralPurposeAllocator

GeneralPurposeAllocator ialah pilihan harian dalam binaan nyahpepijat. Ia menjejak setiap blok serta melaporkan kebocoran dan pembebasan berganda untuk anda.

Sebab Interface Membantu

Menulis kod berasaskan interface bermaksud fungsi anda berfungsi dengan mana-mana allocator. Kod yang sama boleh dijalankan dalam ujian, pada perkakasan tanpa sistem pengendalian atau pada pelayan.

Fungsi Hanya Meminta

Sesuatu fungsi tidak mengambil berat tentang allocator yang diterimanya. Fungsi itu hanya memanggil method seperti alloc dan free pada std.mem.Allocator yang diberikan kepadanya.

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

Tiada Allocator Global

Zig tidak mempunyai heap global tunggal. Anda menentukan allocator yang digunakan oleh setiap bahagian program, supaya sumber memori kekal jelas dan setempat.

Uji dengan Allocator Lain

Dalam ujian, hantarkan std.testing.allocator sebagai gantinya. Kodnya sama, tetapi kini kebocoran menyebabkan ujian gagal, membuktikan manfaat interface ini. ✅

Semakan Pantas

Fikirkan jenis yang dikongsi oleh semua allocator Zig.

Ringkasan

Anda telah mempelajari bahawa std.mem.Allocator ialah satu interface untuk pelbagai backend, jadi kod yang meminta memori boleh berfungsi dengan mana-mana allocator yang anda bekalkan. 🎯

Percuma untuk bermula

Pelajari Zig dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
30
Pelajaran
120

Soalan Lazim

Adakah pelajaran “Antara Muka Pengagih” percuma?

Ya — teks penuh “Antara Muka Pengagih” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Zig Academy, tingkat taraf kepada CoddyKit PRO. Kursus Zig Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Antara Muka Pengagih”?

Satu kontrak untuk semua sumber memori. Anda berlatih Zig Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Zig Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Zig Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.

Berapa lamakah pelajaran “Antara Muka Pengagih” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Zig Academy ini?

Ya. Setiap pelajaran Zig Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Sebab Zig Tiada Peruntukan Tersembunyi
  2. Antara Muka Pengagih
  3. alloc, free, create, destroy
  4. Senarai Dinamik dengan ArrayList
← Kembali ke Zig Academy