まぬねこの足跡。。。

備忘録+たのしさ+ひっそりと

C言語 自由サイズ配列(動的配列)

自由なサイズの配列作成

メモリの確保

ポインタ変数 = malloc(必要なバイトサイズ);
#include <stdlib.h> 必要
プログラム終了まで確保する

メモリの開放

free(ポインタ変数);
メモリリーク防止するため、必ず行う。

int* heap;
heap = (int*)malloc(sizeof(int) * 10);
if (heap == NULL) exit(0);

for (int i = 0; i < 10; i++) {
    heap[i] = i;
}

printf("%d\n", heap[5]);

動的配列のサイズ変更

新しいポインタ変数 = realloc(以前のポインタ変数, 必要なバイトサイズ);
何回も呼び出すとフラグメンテーションをおこす。

int* heap;
heap = (int*)malloc(sizeof(int) * 10);
heap = (int*)realloc(heap, sizeof(int) * 100);
free(heap);

ちょこっとメモ

フラグメンテーション

メモリの分散化

ガベージコレクション

使用メモリを自動的に監視し、ほぼメモリリークを防止する。
メモリの利用効率上のムダが多い。

メモリリーク

動的メモリの開放忘れによる使用メモリの低下

Rust言語

メモリリークに対策されたプログラム言語