他のオブジェクトを参照する VLA としてクラス メンバーがあります (つまり、他のオブジェクトへのポインターが含まれています)。VLA の内容が終わったら、空にしたいと思います。その長さをゼロに設定するのは十分ですか、それともその前に個々の要素を NULL に設定する必要がありますか、それとも両方を行う必要がありますか?
3 に答える
C++ には、略語VLAの使用によって示される意味での可変長配列がありません(C99 のように)。
したがって、コード内の特定の VLA をどうするかについての質問は、特定の C++言語拡張機能には意味があるかもしれませんが、標準の C++ には意味がありません。
いくつかのソース コード、C++ 言語拡張に関する情報、または問題の具体的な説明などは、単にいくつかの誤解を修正するのではなく、より問題指向の回答を提供するのに役立つ可能性があります。
std::vector
使用しているものの代わりにa を使用することで、十分に機能することは合理的な推測です。
ただし、あなたの質問が実際には一部の C++ 言語拡張機能の VLA に関するものであることも合理的な推測です。その場合、使用するアドバイスはstd::vector
よくない可能性があります。
良いアドバイスを決定するための情報はありません。
注: VLA は C99 標準の一部であり、gcc で許可されていても C++ の一部ではありません。
そうは言っても、アレイが作成されると、それをクリアすることはできません。配列 (通常の配列または VLA) のスペースは、ブロックの終わり (関数内) またはプログラムの終わり (名前空間レベル) まで予約されます。
サイズ変更可能な配列が必要な場合は、動的配列を使用する必要があります。標準ライブラリstd::vector
がこの使用法を提供していることがわかります。
を使用std::vector
してから実行しますmy_vector.clear();
。