C ライブラリのメモリ割り当て関数 void *realloc(void *ptr, size_t size) は、malloc または calloc 呼び出しを使用して以前に割り当てられた、ptr が指すメモリ ブロックのサイズを変更しようとします。
メモリは次の 2 つの方法で割り当てられます。
コンパイル時にメモリが割り当てられると、その後は割り当てることができません。実行中に変更されました。メモリが不足しているか、メモリの無駄のいずれかです。
解決策は、メモリを動的に、つまり実行中のプログラムのニーズに応じて作成することです。
動的メモリ管理の標準ライブラリ関数は次のとおりです。
は、割り当てられたメモリを再割り当てするために使用されます。
割り当てられたメモリを増減できます。
再割り当てされたメモリのベース アドレスを指す void ポインタを返します。
realloc() 関数の構文は次のとおりです。
Free void *realloc (pointer, newsize);
次の例は、realloc() 関数の使用法を示しています。 。
int *ptr; ptr = (int * ) malloc (1000);// we can use calloc also - - - - - - - - - ptr = (int * ) realloc (ptr, 500); - - - - - - ptr = (int * ) realloc (ptr, 1500);
以下は、realloc() 関数を使用した C プログラムです。
オンライン デモンストレーション
#include<stdio.h> #include<stdlib.h> int main(){ int *ptr, i, num; printf("array size is 5</p><p>"); ptr = (int*)calloc(5, sizeof(int)); if(ptr==NULL){ printf("Memory allocation failed"); exit(1); // exit the program } for(i = 0; i < 5; i++){ printf("enter number at %d: ", i); scanf("%d", ptr+i); } printf("</p><p>Let's increase the array size to 7</p><p> "); ptr = (int*)realloc(ptr, 7 * sizeof(int)); if(ptr==NULL){ printf("Memory allocation failed"); exit(1); // exit the program } printf("</p><p> enter 2 more integers</p><p></p><p>"); for(i = 5; i < 7; i++){ printf("Enter element number at %d: ", i); scanf("%d", ptr+i); } printf("</p><p> result array is: </p><p></p><p>"); for(i = 0; i < 7; i++){ printf("%d ", *(ptr+i) ); } return 0; }
When上記のプログラムを実行すると、次の結果が生成されます。 -
array size is 5 enter number at 0: 23 enter number at 1: 12 enter number at 2: 45 enter number at 3: 67 enter number at 4: 20 Let's increase the array size to 7 enter 2 more integers Enter element number at 5: 90 Enter element number at 6: 60 result array is: 23 12 45 67 20 90 60
以上がC言語でReallocとは何を意味しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。