Zig Academy · レッスン

Zigに隠れたメモリ確保がない理由

メモリ確保を常に明示的に渡します。

レッスン 1/413 ステップ

「Zigに隠れたメモリ確保がない理由」はCoddyKit上の無料Zig Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはZig Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Zig Academyコースには全4レッスンが含まれています。

メモリは明示的に扱う

Zigでは、標準ライブラリの関数が気付かないうちにヒープメモリを取得することはありません。コードでallocateが必要なら、それを明示的に記述する必要があります。📦

アロケーターを渡す

メモリを割り当てるものはすべて、パラメーターとしてアロケーターを受け取ります。関数にメモリを作るための手段を渡さない限り、メモリが勝手に現れることはありません。

fn buildList(allocator: std.mem.Allocator) !void {}

隠れた new キーワードはない

Zigには new 演算子もガベージコレクターもありません。多くの言語のように、何かが背後でヒープにアクセスすることはありません。

これが重要な理由

割り当てが目に見えるため、メモリがどこから来たのかを常に把握できます。これは組み込みチップ、カーネル、処理の厳しいゲームループにとって重要です。

シグネチャを読む

割り当てる可能性のある関数は、シグネチャにそのことが表れます。アロケーターを受け取り、通常は ! を使ったエラーユニオンを返します。

fn dupe(a: std.mem.Allocator, s: []const u8) ![]u8 {}

スタックは無料

通常のローカル変数はスタック上に置かれるため、アロケーターは必要ありません。値を関数の終了後も存続させる場合や、実行時に拡張する場合にだけアロケーターを使います。

var x: i32 = 5; // stack, no allocation

割り当ては失敗する可能性がある

ヒープメモリの要求は失敗する可能性があるため、割り当てを行う関数はエラーを返します。OutOfMemoryの可能性を処理し、決して無視してはいけません。

作成したものを所有する

アロケーターを呼び出した側が結果を所有し、解放する責任を負います。Zigがメモリを代わりに解放することはないため、所有権は常に明確です。

アロケーターを自由に交換する

アロケーターはパラメーターなので、ロジックを変更せずに方式を交換できます。テストでは1つのアロケーターを、本番では別のアロケーターを使えます。

ライブラリも動作を隠さない

適切に書かれたライブラリは割り当てを隠しません。アロケーターを受け取るため、他者のコードの内部でもメモリを制御できます。

設計によって予測可能

このルールは、隠れた制御フローを作らないというZigの約束の一部です。明示的な割り当てによって、プログラムは予測しやすく、推論しやすくなります。✅

確認問題

Zigの関数が割り当てを行う力をどのように得るか、思い出してください。

まとめ

Zigには隠れた割り当てがないことを学びました。メモリは渡されたアロケーターを通じてのみ取得され、作成したものは自分で所有して解放します。🎯

無料で開始

AI チューターと学ぶ Zig — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
30
レッスン
120

よくある質問

「Zigに隠れたメモリ確保がない理由」レッスンは無料ですか?

はい。「Zigに隠れたメモリ確保がない理由」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Zig Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Zig Academyコースには全4レッスンが含まれています。

「Zigに隠れたメモリ確保がない理由」で何を学びますか?

メモリ確保を常に明示的に渡します。 ブラウザで直接実行するハンズオンコードでZig Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Zig Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのZig Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「Zigに隠れたメモリ確保がない理由」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このZig Academyレッスンでコードを書いて実行できますか?

はい。すべてのZig Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Zigに隠れたメモリ確保がない理由
  2. アロケーターインターフェース
  3. alloc、free、create、destroy
  4. ArrayListによる動的リスト
← Zig Academyに戻る