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()関数でメモリを解放する必要があります。そうしないとメモリリークします。
動的に割り当てられたメモリー領域は、使用後に手動で解放する必要があることに注意してください。さもないと、メモリー漏れが生じます。