0Pricing
Zig Academy · Leçon

L'interface d'allocation

Un contrat unique pour toutes les sources de mémoire.

L'interface d'allocation est une leçon Zig Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Zig Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Zig Academy comprend 4 leçons au total.

Un type courant

Chaque allocator de Zig est transmis sous la forme d’un type unique, std.mem.Allocator. Votre code utilise cette interface unique, jamais une implémentation concrète.

const Allocator = std.mem.Allocator;

Une interface, pas une classe

std.mem.Allocator est une petite interface : un pointeur accompagné d’une table de fonctions. Elle décrit ce qu’un allocator peut faire, et non celui que vous utilisez.

Plusieurs implémentations, une seule forme

Un allocateur de pages, une arène ou un allocateur de test exposent tous la même structure. Remplacer l’un par l’autre ne nécessite aucune modification du code appelant.

Obtenir un véritable allocateur

Vous obtenez un allocateur concret, puis vous récupérez son descripteur .allocator() pour le transmettre sous la forme générique std.mem.Allocator.

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

Le transmettre

Une fois que vous détenez un allocateur, vous transmettez cette valeur à toute fonction qui a besoin de mémoire. L’ensemble du programme peut partager une seule source.

try doWork(a);

L’allocateur de pages

std.heap.page_allocator demande directement de la mémoire au système d’exploitation. Il est simple, mais peu précis : il convient donc aux blocs volumineux ou dont la durée de vie est longue, et non aux petits blocs.

const a = std.heap.page_allocator;

GeneralPurposeAllocator

GeneralPurposeAllocator est le choix courant dans les compilations de débogage. Il suit chaque bloc et vous signale les fuites ainsi que les doubles libérations.

Pourquoi une interface est utile

Programmer avec l’interface signifie que votre fonction fonctionne avec n’importe quel allocateur. Le même code s’exécute dans les tests, sur du matériel nu ou dans un serveur.

Les fonctions demandent simplement

Une fonction ne se soucie pas de l’allocateur qu’elle a reçu. Elle appelle simplement des méthodes comme alloc et free sur le std.mem.Allocator qui lui a été transmis.

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

Pas d’allocateur global

Zig ne possède pas un tas global unique. Vous choisissez l’allocateur utilisé par chaque partie de votre programme, ce qui permet de garder les sources de mémoire visibles et locales.

Tester avec un autre

Dans les tests, vous transmettez plutôt std.testing.allocator. Le code reste le même, mais les fuites font alors échouer le test, ce qui montre l’intérêt de l’interface. ✅

Vérification rapide

Réfléchissez au type que partagent tous les allocateurs Zig.

Récapitulatif

Vous avez appris que std.mem.Allocator est une interface commune à plusieurs moteurs : ainsi, le code qui demande de la mémoire fonctionne avec tout allocateur que vous lui fournissez. 🎯

Questions Fréquemment Posées

La leçon « L'interface d'allocation » est-elle gratuite ?

Oui — le texte complet de « L'interface d'allocation » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Zig Academy, passe à CoddyKit PRO. Le cours Zig Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « L'interface d'allocation » ?

Un contrat unique pour toutes les sources de mémoire. Tu pratiques Zig Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Zig Academy ?

Aucune expérience préalable n'est requise. Zig Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.

Combien de temps prend la leçon « L'interface d'allocation » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Zig Academy ?

Oui. Chaque leçon Zig Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Pourquoi Zig n'a pas d'allocations cachées
  2. L'interface d'allocation
  3. alloc, free, create, destroy
  4. Listes dynamiques avec ArrayList
← Retour à Zig Academy