ページ 11

質問

Posted: 2009年6月09日(火) 11:25
by uzu
毎度お世話になります。

reallocについて質問なんですが、

reallocで追加できる、というのは、

mallocで一度確保した領域について、ということでしょうか。

たとえば、

char *c;

と定義したcに対して、

①mallocで一度領域を確保してから、必要であればreallocで拡充するものなのか、

②reallocでいきなりメモリを確保できるものなのか、

どちらなんでしょうか。

(プログラム的に言えば、たとえばループ内で文字列テーブルを作成する場合、
 ①ループ1回目はmallocで1つ目の文字列を格納する領域を確保し、
  ループ2回目以降はreallocで領域を確保する

 なのか
 ②ループ何回目でもreallocで領域を確保できる)

Re:質問

Posted: 2009年6月09日(火) 11:37
by YuO
いきなりreallocで確保可能です。
realloc(NULL, size)とmalloc(size)は同等の動作をします。

ref) ISO/IEC 9899:1999 7.20.3.4 The realloc function / Paragraph. 3
> If ptr is a null pointer, the realloc function behaves like the malloc function for the specified size.

Re:質問

Posted: 2009年6月09日(火) 11:43
by uzu
>YuO様
ありがとうございます。
すっきりしました。