可変長配列がどのように管理されているかを知りたいです (可変長配列を持つために、どのような追加の変数またはデータ構造がスタックに保持されているか)。
どうもありがとう。
これは、動的にサイズ変更された配列です (実装に依存しますが、最も一般的にはスタック上にあります)。alloca
配列の実際のサイズを返す例外を除いて、昔とほとんど同じですsizeof
。これは、配列のサイズもどこかに格納する必要があることを意味します (実装にも依存しますが、おそらくスタックにも)。
可変長配列のサイズは、コンパイル時ではなく実行時に決定されます。
管理方法はコンパイラによって異なります。
たとえば、GCCはスタックにメモリを割り当てます。
しかし、特別な構造はありません。これは通常の配列であり、実行時にサイズがわかります。
あるいは、Java の ArrayList や c/c++ の vector など、いくつかのコンテナーを使用することもできます。