0Pricing
C Academy · レッスン

動的メモリ確保

malloc、calloc、realloc、freeなどの関数を使って、動的にメモリを管理する方法を学びます

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

動的メモリ確保

動的メモリ確保

C言語では、動的メモリ確保を使用すると、コンパイル時ではなく実行時にメモリを確保できます。

このレッスンでは、次のことを学びます。

  • malloc、calloc、realloc を使用してメモリを確保する方法
  • free を使用して確保したメモリを解放する方法
  • メモリリークを防ぐ方法
動的メモリ確保 — イラスト1

動的メモリ確保とは

動的メモリ確保とは

通常、変数用のメモリはコンパイル時に確保されます。

動的メモリ確保では、専用の関数を使用してプログラムの実行中にメモリを確保します。

これは、コンパイル時にはサイズが分からない配列や構造体を管理する場合に役立ちます。

malloc()によるメモリの確保

malloc()によるメモリの確保

malloc 関数はメモリを確保しますが、初期化は行いません。

構文:

ptr = (int*) malloc(size * sizeof(int));

確保に成功した場合は確保されたメモリへのポインターを返し、失敗した場合は NULL を返します。

例:malloc()の使用

例:malloc()の使用

このプログラムでは、malloc を使用してメモリを確保する方法を示します。

#include <stdio.h>
#include <stdlib.h>

int main() {
    int *ptr = (int*) malloc(5 * sizeof(int));
    if (ptr == NULL) {
        printf("Memory allocation failed!\n");
        return 1;
    }
    for (int i = 0; i < 5; i++) {
        ptr[i] = i * 10;
        printf("%d ", ptr[i]);
    }
    free(ptr);
    return 0;
}

calloc()によるメモリの確保

calloc()によるメモリの確保

calloc 関数はメモリを確保し、0で初期化します。

構文:

ptr = (int*) calloc(num_elements, sizeof(int));

確保に成功した場合は確保されたメモリへのポインターを返し、失敗した場合は NULL を返します。

例:calloc()の使用

例:calloc()の使用

このプログラムでは、calloc を使用してメモリを確保する方法を示します。

#include <stdio.h>
#include <stdlib.h>

int main() {
    int *ptr = (int*) calloc(5, sizeof(int));
    if (ptr == NULL) {
        printf("Memory allocation failed!\n");
        return 1;
    }
    for (int i = 0; i < 5; i++) {
        printf("%d ", ptr[i]); // All elements initialized to 0
    }
    free(ptr);
    return 0;
}

realloc()によるメモリの再確保

realloc()によるメモリの再確保

realloc 関数は、以前に確保したメモリのサイズを変更します。

構文:

ptr = realloc(ptr, new_size * sizeof(int));

新しいメモリブロックへのポインターを返します。

free()によるメモリの解放

free()によるメモリの解放

メモリリークを防ぐため、確保したメモリは free() を使用して解放する必要があります。

構文:

free(ptr);

解放後は、そのポインターにアクセスしないでください。

まとめ

まとめ

このレッスンでは、次のことを学びました。

  • malloc と calloc を使用してメモリを確保する方法
  • realloc を使用してメモリを再確保する方法
  • メモリリークを防ぐために free を使用してメモリを解放する方法

次は、C言語のポインター配列と関数ポインターについて学びます。

動的メモリ確保 — イラスト10

よくある質問

「動的メモリ確保」レッスンは無料ですか?

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

「動的メモリ確保」で何を学びますか?

malloc、calloc、realloc、freeなどの関数を使って、動的にメモリを管理する方法を学びます ブラウザで直接実行するハンズオンコードでC Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「動的メモリ確保」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

  1. ポインタの概要
  2. 動的メモリ確保
  3. ポインタ配列と関数ポインタ
← C Academyに戻る