C ライブラリの realloc() 関数: 使用方法? 構文と例

realloc()とは何ですか?

realloc() すでに割り当てられているメモリ ブロックにさらにメモリ サイズを追加するための C ライブラリの関数です。 C における realloc の目的は、元の内容をそのままにして現在のメモリ ブロックを拡張することです。 realloc() 関数は、malloc 関数または calloc 関数によって以前に割り当てられたメモリのサイズを削減するのに役立ちます。 realloc はメモリの再割り当てを表します。

C での realloc の構文

ptr = realloc (ptr,newsize);

上記のステートメントは、変数 newsize で指定されたサイズの新しいメモリ空間を割り当てます。 実行後、 function、ポインタはメモリ ブロックの最初のバイトに返されます。 新しいサイズは、以前のメモリより大きくても小さくても構いません。 新しく割り当てられたブロックが以前のメモリ ブロックと同じ場所を指すかどうかはわかりません。 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 の例での realloc の結果:

Memory created successfully

reallocが失敗した場合は、 nullポインタ, 以前のデータも解放されます。