【C言語】mallocで確保されたメモリをfree関数で解放する

この記事では、C言語におけるメモリの確保と解放の方法について解説します。

メモリの確保方法や解放方法、さらにはfree関数の使い方や注意点についても紹介します。

初心者の方でもわかりやすく、実際のサンプルコードを交えて解説していきます。

目次から探す

メモリの確保と解放

プログラムを実行する際に、必要なデータを格納するためにメモリを確保する必要があります。

C言語では、メモリの確保にはmalloc関数を使用します。

一方、メモリの解放にはfree関数を使用します。

メモリの確保方法

メモリの確保には、malloc関数を使用します。

malloc関数は、指定したバイト数のメモリ領域を動的に確保し、その先頭アドレスを返します。

以下は、malloc関数を使用して整数型の配列を動的に確保する例です。

#include <stdio.h>
#include <stdlib.h>
int main() {
    int size;
    int* array;
    printf("配列のサイズを入力してください: ");
    scanf("%d", &size);
    // メモリの確保
    array = (int*)malloc(size * sizeof(int));
    if (array == NULL) {
        printf("メモリの確保に失敗しました\n");
        return 1;
    }
    printf("メモリの確保に成功しました\n");
    // メモリの解放
    free(array);
    return 0;
}

malloc関数は、指定したバイト数のメモリ領域を確保するため、sizeof演算子を使用してデータ型のサイズを掛け算しています。

メモリの解放方法

メモリの解放には、free関数を使用します。

free関数は、malloc関数や関連する関数によって確保されたメモリを解放します。

以下は、malloc関数で確保したメモリをfree関数で解放する例です。

#include <stdio.h>
#include <stdlib.h>
int main() {
    int* array;
    // メモリの確保
    array = (int*)malloc(5 * sizeof(int));
    if (array == NULL) {
        printf("メモリの確保に失敗しました\n");
        return 1;
    }
    printf("メモリの確保に成功しました\n");
    // メモリの解放
    free(array);
    printf("メモリの解放が完了しました\n");
    return 0;
}

free関数を使用することで、確保したメモリを解放し、再利用することができます。

以上が、C言語におけるメモリの確保と解放の方法です。

メモリの確保と解放を適切に行うことで、プログラムのメモリ使用量を最適化し、効率的なプログラムを作成することができます。

free関数の使い方

free関数の概要

free関数は、malloccallocなどで動的に確保されたメモリを解放するために使用されます。

メモリの解放は、プログラムの実行中に不要になったメモリを解放し、システムのリソースを効率的に管理するために重要です。

free関数は、以下のような形式で使用します。

free(ポインタ);

ここで、ポインタは解放するメモリブロックの先頭アドレスを指すポインタ変数です。

free関数の注意点

free関数を使用する際には、以下の注意点に注意する必要があります。

  1. free関数は、malloccallocなどで確保されたメモリブロックに対してのみ使用することができます。

静的に割り当てられたメモリや、他の方法で確保されたメモリに対しては使用できません。

  1. free関数に渡すポインタは、必ずmalloccallocなどで確保されたメモリブロックの先頭アドレスを指す必要があります。

それ以外のポインタや、解放済みのポインタを渡すと、予期しない動作やプログラムのクラッシュが発生する可能性があります。

  1. free関数を呼び出した後は、解放されたメモリブロックにアクセスしないように注意する必要があります。

解放されたメモリにアクセスすると、未定義の動作が発生する可能性があります。

  1. free関数は、メモリの解放のみを行います。

解放後のメモリには何も保証されません。

そのため、解放後にそのメモリを参照することは避けるべきです。

以上が、free関数の使い方と注意点です。

メモリの解放はプログラムの正常な動作に欠かせない要素なので、適切に使用するようにしましょう。

目次から探す