C ライブラリの realloc() 関数:使い方は?構文と例
realloc() とは?
realloc() 既に割り当てられているメモリ ブロックにさらにメモリ サイズを追加するための C ライブラリの機能です。 C での realloc の目的は、元の内容をそのままにして、現在のメモリ ブロックを拡張することです。 realloc() 関数は、malloc または calloc 関数によって以前に割り当てられたメモリのサイズを減らすのに役立ちます。 realloc は、メモリの再割り当てを表します。
C の realloc の構文
ptr = realloc (ptr,newsize);
上記のステートメントは、変数 newsize で指定されたサイズの新しいメモリ空間を割り当てます。関数の実行後、ポインタはメモリ ブロックの最初のバイトに戻されます。新しいサイズは、以前のメモリより大きくても小さくてもかまいません。新しく割り当てられたブロックが以前のメモリ ブロックと同じ場所を指すかどうかはわかりません。 C の realloc 関数は、以前のすべてのデータを新しいリージョンにコピーします。データが安全に保たれるようにします。
例:
#include <stdio.h> int main () { char *ptr; ptr = (char *) malloc(10); strcpy(ptr, "Programming"); printf(" %s, Address = %u\n", ptr, ptr); ptr = (char *) realloc(ptr, 20); //ptr is reallocated with new size strcat(ptr, " In 'C'"); printf(" %s, Address = %u\n", ptr, ptr); free(ptr); return 0; }
realloc() の使い方
以下の C のプログラムは、C で realloc を使用してメモリを再割り当てする方法を示しています。
#include <stdio.h> #include <stdlib.h> int main() { int i, * ptr, sum = 0; ptr = malloc(100); if (ptr == NULL) { printf("Error! memory not allocated."); exit(0); } ptr = realloc(ptr,500); if(ptr != NULL) printf("Memory created successfully\n"); return 0; }
C の例での再割り当ての結果:
Memory created successfully
再割り当ての結果として操作が失敗するたびに、null ポインターが返され、以前のデータも解放されます。
C言語