Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

Cプログラミングでの動的メモリ割り当てとはどういう意味ですか?


動的メモリ割り当て

  • 実行時(実行時)のメモリの割り当ては、動的メモリ割り当てと呼ばれます。

  • 関数calloc()およびmalloc()は、動的メモリの割り当てをサポートします。

  • メモリ空間の動的割り当ては、値が関数によって返され、ポインタ変数に割り当てられるときに、これらの関数を使用して行われます。

  • この場合、変数はプログラムユニットがアクティブになった場合にのみ割り当てられます。

  • 動的割り当てを実装するためにヒープと呼ばれるデータ構造を使用します。

  • メモリの再利用性があり、必要のないときにメモリを解放できます。

  • より効率的です。

  • このメモリ割り当て方式では、実行は静的メモリ割り当てよりも遅くなります。

  • ここでは、プログラム中いつでもメモリを解放できます。

次のプログラムは、動的メモリ割り当て関数を使用して、一連の要素の偶数と奇数の合計を計算します-

#include<stdio.h>
#include<stdlib.h>
void main(){
   //Declaring variables, pointers//
   int i,n;
   int *p;
   int even=0,odd=0;
   //Declaring base address p using malloc//
   p=(int *)malloc(n*sizeof(int));
   //Reading number of elements//
   printf("Enter the number of elements : ");
   scanf("%d",&n);
   /*Printing O/p -
   We have to use if statement because we have to check if memory
   has been successfully allocated/reserved or not*/
   if (p==NULL){
      printf("Memory not available");
      exit(0);
   }
   //Storing elements into location using for loop//
   printf("The elements are : \n");
   for(i=0;i<n;i++){
      scanf("%d",p+i);
   }
   for(i=0;i<n;i++){
      if(*(p+i)%2==0){
         even=even+*(p+i);
      }
      else{
         odd=odd+*(p+i);
      }
   }
   printf("The sum of even numbers is : %d\n",even);
   printf("The sum of odd numbers is : %d\n",odd);
}

出力

Enter the number of elements : 4
The elements are :
35
24
46
12
The sum of even numbers is : 82
The sum of odd numbers is : 35

  1. インターフェイスとサービスとはどういう意味ですか?

    通常、ネットワークサービス は、アプリケーション層以上で実行され、コンピュータネットワークで使用されるアプリケーションです。 ネットワークサービスは、データの保存、操作、プレゼンテーション、通信を提供します。これは、クライアントサーバーアーキテクチャまたはピアツーピアアーキテクチャを使用して実装されます。 サービスインターフェース サービス指向アーキテクチャー(SOA)を実装するために使用されます。これは、さまざまなテクノロジー間のアプリケーション間の相互運用性を実現するために実装されています。 すべての階層構造の機能の基本は、その上の層にサービスを提供することです。 インターフェースの

  2. Cプログラミングでの静的メモリ割り当てとはどういう意味ですか?

    メモリは次の2つの方法で割り当てることができます- 静的メモリ割り当て 静的変数は、固定サイズの割り当てられたスペースの1つのブロックで定義されます。一度割り当てられると、解放されることはありません。 プログラムで宣言された変数にメモリが割り当てられます。 アドレスは「&」演算子を使用して取得でき、ポインタに割り当てることができます。 メモリはコンパイル時に割り当てられます。 スタックを使用して、メモリの静的割り当てを維持します。 この割り当てでは、メモリが割り当てられると、メモリサイズは変更できません。 効率は劣ります。 変数の最終的なサイズは、