😸

[C] realloc 関数

に公開

機能

動的に確保したメモリ領域のサイズを変更する標準関数[1]

使用例

reallocでメモリ領域を拡張する と表示する

\n は改行を表す エスケープシーケンス[2]

コード

int *p = malloc(2 * sizeof(int));
p = realloc(p, 4 * sizeof(int));
printf("reallocでメモリ領域を拡張する\n");
全文
#include <stdio.h>
#include <stdlib.h>
void main() {
    int *p = malloc(2 * sizeof(int));
    p = realloc(p, 4 * sizeof(int));
    printf("reallocでメモリ領域を拡張する\n");
    free(p);
}

実行結果

reallocでメモリ領域を拡張する

reallocでサイズ0にすればfree相当 を変数から表示する

コード

char msg[] = "reallocでサイズ0にすればfree相当\n";
int *p = malloc(10 * sizeof(int));
p = realloc(p, 0);
printf("%s", msg);
全文
#include <stdio.h>
#include <stdlib.h>
void main() {
    char msg[] = "reallocでサイズ0にすればfree相当\n";
    int *p = malloc(10 * sizeof(int));
    p = realloc(p, 0); // サイズ0でfreeと同じ
    printf("%s", msg);
    // pへのアクセス禁止
}

実行結果

reallocでサイズ0にすればfree相当
脚注
  1. 動的メモリ確保関数で、mallocなどで取得したメモリの大きさを拡張・縮小しなおす。新しい領域は未初期化。失敗時はNULLを返す。 ↩︎

  2. 改行やタブなど、画面に表示されない制御文字のこと。 ↩︎

Discussion