誰かが C プログラミング言語で問題を解決することについて話していて、動的に作成された構造体が進むべき道であると言う場合、彼らは何を参照している可能性が高いでしょうか? おそらくこれに別の名前がありますか?
3 に答える
この割り当てでは、データ構造に動的メモリ割り当てを使用する必要があります。プログラムは静的に割り当てられたメモリを使用しない場合があります。たとえば、int array[65536];
. 代わりに、これらすべてを を使用してオンデマンドで割り当てる必要がありますmalloc/calloc/realloc
(および を使用して解放する必要がありますfree
)。
C では、必要に応じてプログラムの実行中に新しいメモリを割り当てることができます (これが「動的割り当て」と呼ばれる理由です)。
たとえば、リンク リストという非常に基本的な構造がありますが、プログラムの実行中に必要なノードの数がわかりません。したがって、コードで、リストに新しいノードを格納する必要があるたびに、プログラムはこのx量のメモリを使用して新しいノードを割り当てる必要があると宣言します (既存のリストにアタッチされます)。
typedef struct {
int datum;
Node *next;
} Node;
その後、次のことができます。
Node *new_node = (Node *)malloc(sizeof(Node);
同様に、実行時にメモリを解放できます。
free(new_node);
あなたの質問がHow to create structure dynamically?
あなたが何を聞きたいのかわからないまま、あなたがこれだけを尋ねていると仮定して、私は答えを出しているだけです。
動的データ構造は、ヒープからメモリを割り当てたり割り当て解除したりすることで、プログラムが必要とするサイズに変化するデータ構造です。この用語は、中央処理装置 (CPU) がいつでも使用できる未使用のメモリを表すために使用されます。 . 動的データ構造により、プログラマーは自分のプログラムが消費するメモリーの量を正確に制御できます。C プログラミング言語で作成された動的データ構造は、ヒープからメモリ ブロックを割り当てるときに、ポインターを使用してそれらのブロックを何らかのデータ構造にリンクします。データ構造は、必要がなくなったときにメモリ ブロックをヒープに返します。メモリ ブロックをリサイクルするこのシステムにより、プログラムはメモリを非常に効率的に使用できます。