C言語で配列に動的に領域を割り当てる方法は?

C言語では、malloc()関数で配列のメモリ空間を動的に割り当てます。malloc()関数の関数プロトタイプを以下に示します。

void* malloc(size_t size);

malloc 関数は、引数の size で指定されたバイト数のメモリ空間を確保し、その先頭アドレスをポインタで返します。

例えば、以下のコードは、5 つの整数を保持する配列を動的に割り当てる方法を示しています。

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

int main() {
    int n = 5;
    int* arr = (int*)malloc(n * sizeof(int));

    if (arr == NULL) {
        printf("动态内存分配失败\n");
        return 1;
    }

    for (int i = 0; i < n; i++) {
        arr[i] = i + 1;
    }

    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }

    free(arr);  // 释放动态分配的内存空间

    return 0;
}

上記のコードでは、malloc(n * sizeof(int))という文でn * sizeof(int)バイトメモリを確保し、確保したメモリのポインタをarrという変数に代入しています。動的確保したメモリを使い終わったら、free()関数でメモリを解放する必要があります。そうしないとメモリリークします。

動的に割り当てられたメモリー領域は、使用後に手動で解放する必要があることに注意してください。さもないと、メモリー漏れが生じます。

bannerAds