C言語の標準関数を目的別に調べることができる辞典

ホーム > C 標準関数逆引き辞典 > メモリ > メモリ領域を再割り当てする

C 標準関数逆引き辞典

:: reverse dictionary ::

メモリ

※ソースファイルについて


メモリ領域を再割り当てする

メモリ領域を再割り当てするには、realloc 関数を使います。

≪宣言≫

#include <stdio.h>
#include <stdlib.h>
int *mem;

/* mem[0], mem[1], mem[2] を割り当てる */
mem = (int *)malloc(sizeof(int) * 3);
if (mem == NULL)
{
  printf("メモリ領域の割り当てに失敗しました。\n");
  return EXIT_FAILURE;
}

mem[0] = 1;
mem[1] = 2;
mem[2] = 3;

/* mem[3], mem[4] を増やす */
mem = (int *)realloc(mem, sizeof(int) * 5);
if (mem == NULL)
{
  printf("メモリ領域の再割り当てに失敗しました。\n");
}
else
{
  mem[3] = 4;
  mem[4] = 5;
  printf("mem[0]=%d\n", mem[0]);
  printf("mem[1]=%d\n", mem[1]);
  printf("mem[2]=%d\n", mem[2]);
  printf("mem[3]=%d\n", mem[3]);
  printf("mem[4]=%d\n", mem[4]);
}

free(mem);

ソースファイル

再割り当てに成功した場合は、次のような出力になります。
memint のサイズ × 5 バイト分の領域が割り当てられます)

mem[0]=1
mem[1]=2
mem[2]=3
mem[3]=4
mem[4]=5

▼ 関数

void *realloc(void *m, size_t sz)

すでに割り当てられているメモリ領域 msz バイトのメモリ領域に再割り当てします。

再割り当てに成功した場合は、元のメモリ領域を解放します。 再割り当てに失敗した場合は、元のメモリ領域を解放しません。

●引数

m … 再割り当てするメモリ領域
sz … 新しいメモリ領域のバイト数

●戻り値

・再割り当て成功 … 再割り当てしたメモリ領域へのポインタ
・再割り当て失敗 … NULL

●重要

割り当てたメモリ領域は、必ず free 関数で解放する必要があります。

注目キーワード ベスト5

  1. セキュリティ
  2. ホスティング
  3. レンタルサーバ
  4. ファイル復旧
  5. ハードディスク修復

メモリ - memory -


ホーム > C 標準関数逆引き辞典 > メモリ > メモリ領域を再割り当てする

Copyright (C) 2005-2007 Noto Watabe. All rights reserved.
e-mail:wmh@always-pg.com