ここでは、C 言語における動的メモリ割り当てとは何かを学びます。 C プログラミング言語には、メモリの割り当てと管理のためのいくつかの関数が用意されています。これらの関数は
説明 | |
---|---|
この関数は、各要素のサイズをバイト単位で指定した | num要素の配列を割り当てます。 |
この関数は、アドレスで指定されたメモリ ブロックを解放します。 | |
この関数は、 | numバイトの配列を割り当て、初期化されないままにします。 |
この関数はメモリを再割り当てし、 | newsizeに拡張します。 |
char name[100];
しかし、ここで、名前の長さがわからない場合を考えてみましょう。保存する必要があるテキスト。たとえば、トピックに関する詳細な説明を保存したい場合。ここでは、必要なメモリ量を定義せずに文字へのポインタを定義する必要があります。その後、必要に応じて、次の例に示すようにメモリを割り当てることができます。 -
サンプル コード
#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char name[100]; char *description; strcpy(name, "Adam"); /* allocate memory dynamically */ description = malloc( 200 * sizeof(char) ); if( description == NULL ) { fprintf(stderr, "Error - unable to allocate required memory</p><p>"); } else { strcpy( description, "Adam a DPS student in class 10th"); } printf("Name = %s</p><p>", name ); printf("Description: %s</p><p>", description ); }
Name = Zara Ali Description: Zara ali a DPS student in class 10th
calloc(200, sizeof(char));
したがって、メモリの割り当てを完全に制御できます。任意のサイズ値を渡す場合、配列とは異なり、配列のサイズは一度定義されると変更できません。
メモリ位置のサイズを調整する
あるいは、関数 realloc() を呼び出して、割り当てられたメモリ ブロックのサイズを増減することもできます。上記のプログラムをもう一度確認して、realloc() 関数と free() 関数を使用してみましょう -
サンプル コード
#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char name[100]; char *description; strcpy(name, "Adam"); /* allocate memory dynamically */ description = malloc( 30 * sizeof(char) ); if( description == NULL ) { fprintf(stderr, "Error - unable to allocate required memory</p><p>"); } else { strcpy( description, "Adam a DPS student."); } /* suppose you want to store bigger description */ description = realloc( description, 100 * sizeof(char) ); if( description == NULL ) { fprintf(stderr, "Error - unable to allocate required memory</p><p>"); } else { strcat( description, "He is in class 10th"); } printf("Name = %s</p><p>", name ); printf("Description: %s</p><p>", description ); /* release memory using free() function */ free(description); }
Name = Adam Description: Adam a DPS student.He is in class 10th
以上が動的メモリ割り当ては、C 言語のメカニズムです。これにより、プログラムは実行時にメモリ領域を動的に割り当てたり解放したりできます。動的メモリ割り当てを使用すると、プログラムはコンパイル時にメモリ サイズを決定することなく、必要に応じてメモリを動的に割り当てることができます。これにより、プログラムはメモリをより柔軟に管理し、利用可能なシステム リソースを効率的に使用できるようになります。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。