ホームページ  >  記事  >  バックエンド開発  >  C言語でReallocとは何を意味しますか?

C言語でReallocとは何を意味しますか?

WBOY
WBOY転載
2023-08-28 12:41:051340ブラウズ

C ライブラリのメモリ割り当て関数 void *realloc(void *ptr, size_t size) は、malloc または calloc 呼び出しを使用して以前に割り当てられた、ptr が指すメモリ ブロックのサイズを変更しようとします。

メモリ割り当て関数

メモリは次の 2 つの方法で割り当てられます。

C言語でReallocとは何を意味しますか?

コンパイル時にメモリが割り当てられると、その後は割り当てることができません。実行中に変更されました。メモリが不足しているか、メモリの無駄のいずれかです。

解決策は、メモリを動的に、つまり実行中のプログラムのニーズに応じて作成することです。

動的メモリ管理の標準ライブラリ関数は次のとおりです。

  • malloc ( )
  • calloc ( )
  • realloc ( )
  • free ( )

realloc ( ) 関数

  • は、割り当てられたメモリを再割り当てするために使用されます。

  • 割り当てられたメモリを増減できます。

  • 再割り当てされたメモリのベース アドレスを指す void ポインタを返します。

realloc() 関数の構文は次のとおりです。

Free void *realloc (pointer, newsize);

Example

次の例は、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&#39;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&#39;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 サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。