C でのベクトルのメモリ割り当て
C でベクトルを扱うときは、そのメモリ割り当ての特性を理解することが不可欠です。次のステートメントを考えてみましょう。
- vector vect;
- vector *vect = 新しいベクトル<タイプ>;
- ベクトル<タイプ*> vect;
スタックまたはヒープの割り当て?
-
vector vect: これは、実際の要素がヒープ (フリー ストア) に割り当てられる一方で、ベクトル ヘッダーをスタックに割り当てます。
-
vector *vect = new Vector;: ベクトル ポインターと要素を含むすべてがヒープ上に割り当てられます。
-
vector vect: ベクトルはスタック上に割り当てられますが、その中のポインタはヒープ上に割り当てられます。これらのポインタのターゲットは、使用法に応じて異なります。
内部メモリ割り当て
ベクトルおよびその他の STL コンテナの場合、メモリ割り当ては次のように行われます。
- サイズや容量などのメタデータを格納するコンテナ ヘッダーは、通常、
- 実際の要素は空きストアに動的に割り当てられます。
- ポインタのベクトルの場合、ポインタ自体も空きストアに割り当てられますが、ポインタが指すオブジェクトはさまざまな値を持つことができます。メモリ割り当てメカニズム。
以上がC はベクトル (スタックまたはヒープ) にどのようにメモリを割り当てますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。