22:47:24)追加された行はこの色です。削除された行はこの色です。[#uf41b23d]-第1引数--拡張する領域を指定するためのポインタ。---このポインタはmalloc,calloc,reallocのいずれかが返したアドレスでなければならない。--例外としてNULLが与えられた場合は、reallocはmallocと同じ動作をする。-第2引数--拡張したい大きさ。[#bf08a352]-拡張に失敗するとNULLが返される。[#kdf310ae]-calloc,malloc,reallocにより作成されたメモリ領域pを保持しながら、再度sizeバイトの大きさに拡張する。--最初はこれくらいで全部のデータが収まると予想してmallocしたとする。その後確保したメモリ領域では足りなくなることもある。このときの対処法は2つ考えられる。---まず1つ目の方法は、十分なメモリをmallocにより新しく確保して、そこにコピーしてしまう方法である。---次に2つ目の方法は、reallocでメモリ領域を拡張する方法である。-失敗するとNULLが返される。-拡張されてできたメモリ領域は初期化されない。-メモリが配列A,B,未使用という順番で並んでいたとする。--このとき、Bをreallocで拡張するときは、Bのアドレスは変化せずにサイズだけが拡張される。--一方、Aをreallocで拡張するときは、Bが邪魔なのでそのままAを拡張することはできない。そこで、Bの後ろにAをコピーし、そのAの後ろにサイズを拡張していく。元のAのアドレスとは異なるアドレスが返されることになる。"メモリ領域の確保に失敗しました。1文字ずつreallocをしていては効率が悪くなってしまうし、フラグメンテーションも発生しやすいという問題がある。reallocをするときは、1度にある程度まとまった量を拡張した方がよいと言える。realloc関数を使って領域を拡大しても、既存のすべてのデータが保持されている。簡単に初期化したければ、memset関数を用いればよい。具体的に言えば、古いデータの存在する次の位置から新しい領域の末尾までを次のように初期化すればよい。サンプルプログラムは次の通りである。{printf("メモリ領域の確保に失敗しました。"メモリの拡大に失敗しました。〜ポインタ手習い指南〜。