logo

C での動的メモリ割り当て

の概念 C言語での動的メモリ割り当て C プログラマが実行時にメモリを割り当てられるようにします。 。 stdlib.hヘッダファイルの4つの関数により、C言語での動的メモリ割り当てが可能です。

  1. malloc()
  2. calloc()
  3. realloc()
  4. 無料()

上記の関数を学ぶ前に、静的メモリ割り当てと動的メモリ割り当ての違いを理解しましょう。

静的メモリ割り当て動的メモリ割り当て
メモリはコンパイル時に割り当てられます。メモリは実行時に割り当てられます。
プログラムの実行中にメモリを増やすことはできません。プログラムの実行中にメモリを増やすことができます。
配列で使用されます。リンクリストで使用されます。

次に、動的メモリ割り当てに使用されるメソッドを簡単に見てみましょう。

ハドゥープのチュートリアル
malloc() 要求されたメモリの単一ブロックを割り当てます。
calloc() 要求されたメモリの複数のブロックを割り当てます。
realloc() malloc() または calloc() 関数によって占有されているメモリを再割り当てします。
無料() 動的に割り当てられたメモリを解放します。

C の malloc() 関数

malloc() 関数は、要求されたメモリの単一ブロックを割り当てます。

実行時にメモリを初期化しないため、最初はガベージ値が含まれます。

メモリが十分でない場合は NULL を返します。

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

JavaオブジェクトをJSONに変換する
 ptr=(cast-type*)malloc(byte-size) 

malloc() 関数の例を見てみましょう。

 #include #include int main(){ int n,i,*ptr,sum=0; printf(&apos;Enter number of elements: &apos;); scanf(&apos;%d&apos;,&amp;n); ptr=(int*)malloc(n*sizeof(int)); //memory allocated using malloc if(ptr==NULL) { printf(&apos;Sorry! unable to allocate memory&apos;); exit(0); } printf(&apos;Enter elements of array: &apos;); for(i=0;i<n;++i) { scanf('%d',ptr+i); sum+="*(ptr+i);" } printf('sum="%d&apos;,sum);" free(ptr); return 0; < pre> <p> <strong>Output</strong> </p> <pre> Enter elements of array: 3 Enter elements of array: 10 10 10 Sum=30 </pre> <h2>calloc() function in C</h2> <p>The calloc() function allocates multiple block of requested memory.</p> <p>It initially initialize all bytes to zero.</p> <p>It returns NULL if memory is not sufficient.</p> <p>The syntax of calloc() function is given below:</p> <pre> ptr=(cast-type*)calloc(number, byte-size) </pre> <p>Let&apos;s see the example of calloc() function.</p> <pre> #include #include int main(){ int n,i,*ptr,sum=0; printf(&apos;Enter number of elements: &apos;); scanf(&apos;%d&apos;,&amp;n); ptr=(int*)calloc(n,sizeof(int)); //memory allocated using calloc if(ptr==NULL) { printf(&apos;Sorry! unable to allocate memory&apos;); exit(0); } printf(&apos;Enter elements of array: &apos;); for(i=0;i<n;++i) { scanf('%d',ptr+i); sum+="*(ptr+i);" } printf('sum="%d&apos;,sum);" free(ptr); return 0; < pre> <p> <strong>Output</strong> </p> <pre> Enter elements of array: 3 Enter elements of array: 10 10 10 Sum=30 </pre> <h2>realloc() function in C</h2> <p>If memory is not sufficient for malloc() or calloc(), you can reallocate the memory by realloc() function. In short, it changes the memory size.</p> <p>Let&apos;s see the syntax of realloc() function.</p> <pre> ptr=realloc(ptr, new-size) </pre> <h2>free() function in C</h2> <p>The memory occupied by malloc() or calloc() functions must be released by calling free() function. Otherwise, it will consume memory until program exit.</p> <p>Let&apos;s see the syntax of free() function.</p> <pre> free(ptr) </pre> <hr></n;++i)></pre></n;++i)>

C の calloc() 関数

calloc() 関数は、要求されたメモリの複数のブロックを割り当てます。

逆文字列Java

最初はすべてのバイトをゼロに初期化します。

メモリが十分でない場合は NULL を返します。

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

 ptr=(cast-type*)calloc(number, byte-size) 

calloc() 関数の例を見てみましょう。

 #include #include int main(){ int n,i,*ptr,sum=0; printf(&apos;Enter number of elements: &apos;); scanf(&apos;%d&apos;,&amp;n); ptr=(int*)calloc(n,sizeof(int)); //memory allocated using calloc if(ptr==NULL) { printf(&apos;Sorry! unable to allocate memory&apos;); exit(0); } printf(&apos;Enter elements of array: &apos;); for(i=0;i<n;++i) { scanf(\'%d\',ptr+i); sum+="*(ptr+i);" } printf(\'sum="%d&apos;,sum);" free(ptr); return 0; < pre> <p> <strong>Output</strong> </p> <pre> Enter elements of array: 3 Enter elements of array: 10 10 10 Sum=30 </pre> <h2>realloc() function in C</h2> <p>If memory is not sufficient for malloc() or calloc(), you can reallocate the memory by realloc() function. In short, it changes the memory size.</p> <p>Let&apos;s see the syntax of realloc() function.</p> <pre> ptr=realloc(ptr, new-size) </pre> <h2>free() function in C</h2> <p>The memory occupied by malloc() or calloc() functions must be released by calling free() function. Otherwise, it will consume memory until program exit.</p> <p>Let&apos;s see the syntax of free() function.</p> <pre> free(ptr) </pre> <hr></n;++i)>

C の realloc() 関数

malloc() または calloc() に必要なメモリが不足している場合は、realloc() 関数によってメモリを再割り当てできます。つまり、メモリサイズが変わります。

Javaのaのascii

realloc() 関数の構文を見てみましょう。

 ptr=realloc(ptr, new-size) 

Cのfree()関数

malloc() 関数または calloc() 関数によって占有されているメモリは、free() 関数を呼び出して解放する必要があります。そうしないと、プログラムが終了するまでメモリを消費します。

free() 関数の構文を見てみましょう。

 free(ptr)