undefined und nicht initialisierter Speicher
Reservieren Sie Speicherplatz, bevor ein Wert vorhanden ist.
undefined und nicht initialisierter Speicher ist eine kostenlose Zig Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Zig Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Zig Academy-Kurs umfasst insgesamt 4 Lektionen.
Zuerst Speicher reservieren
Manchmal möchten Sie Speicher reservieren, bevor Sie einen Wert zum Eintragen haben. Dafür stellt Zig das Schlüsselwort undefined bereit.
undefined kennenlernen
Mit undefined deklarieren Sie ein Binding, dessen Speicher reserviert ist, aber noch keinen sinnvollen Wert enthält. Sie versprechen, ihn bald zu setzen.
var buffer: [16]u8 = undefined;Es ist ein Versprechen
undefined ist Ihre Zusage, vor dem Lesen einen echten Wert zuzuweisen. Lesen Sie den Wert zuerst, erhalten Sie Müll, also ein nicht spezifiziertes Bitmuster.
Häufig bei Puffern
Ein festes Array, das Sie gleich füllen möchten, ist der klassische Fall. Sie legen die Größe des Puffers fest, lassen ihn undefined und schreiben anschließend Element für Element hinein.
var line: [256]u8 = undefined;Die Sicherheit hilft Ihnen
Im Debug- und ReleaseSafe-Modus füllt Zig undefined-Speicher mit 0xAA-Bytes. Dieses auffällige Muster hilft Ihnen, versehentliche Lesezugriffe zu früh zu erkennen.
Vor dem Lesen zuweisen
Die Regel ist einfach: Schreiben Sie immer einen echten Wert, bevor Sie ein undefined-Binding lesen. Ein vorheriger Lesezugriff ist ein Fehler, den Zig Sie vermeiden lassen möchte.
var x: i32 = undefined;
x = 42;undefined ist nicht null
undefined bedeutet nicht initialisierten Speicher, während null einen bewusst fehlenden Wert in einem optionalen Typ bedeutet. Beide lösen völlig unterschiedliche Probleme.
Kosten für das Nullen überspringen
Wenn Sie großen Speicher undefined lassen, vermeiden Sie die Kosten, unnötige Nullen zu schreiben. Das ist eine bewusste Performance-Entscheidung, keine Nachlässigkeit.
Felder können undefined sein
Auch ein Strukturfeld kann zunächst undefined sein, wenn Sie es später setzen möchten. Der Zweck ist ein ehrlicher, expliziter Zustand von nicht initialisiert.
var p: Point = undefined;Sparsam verwenden
Die meisten Bindings sollten von Anfang an einen echten Wert enthalten. Verwenden Sie undefined nur, wenn Sie tatsächlich rohen Speicher reservieren müssen.
Explizit ist besser als verborgen
Andere Sprachen lassen Variablen möglicherweise stillschweigend nicht initialisiert. Zig macht dies explizit, sodass jeder Leser die Absicht klar erkennt.
Schnellprüfung
Sie schreiben var x: i32 = undefined; und lesen x, bevor Sie einen Wert zuweisen. Was haben Sie getan?
Zusammenfassung
Sie haben gelernt, dass undefined Speicher ohne Wert reserviert, häufig für Puffer. Weisen Sie immer vor dem Lesen zu und denken Sie daran, dass es sich von null unterscheidet. 📦
Häufig gestellte Fragen
Ist die Lektion „undefined und nicht initialisierter Speicher“ kostenlos?
Ja — der vollständige Text von „undefined und nicht initialisierter Speicher“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Zig Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Zig Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „undefined und nicht initialisierter Speicher“?
Reservieren Sie Speicherplatz, bevor ein Wert vorhanden ist. Du übst Zig Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Zig Academy zu starten?
Keine Vorkenntnisse erforderlich. Zig Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „undefined und nicht initialisierter Speicher“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Zig Academy-Lektion Code schreiben und ausführen?
Ja. Jede Zig Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- const für Werte, die sich nie ändern
- var für veränderlichen Zustand
- Typinferenz oder explizite Typen
- undefined und nicht initialisierter Speicher