長さ 0 の配列を含む構造体のリファクタリング
従来のコードでは、長さ 0 の配列を含む構造体が発生することは珍しくありません。この型破りな慣行は懸念を引き起こし、コードのリファクタリング作業を妨げる可能性があります。この記事では、長さ 0 の配列の背後にある理由を取り上げ、そのリファクタリングに関するアドバイスを提供します。
長さ 0 の配列の原因と使用法
構造体の長さ 0 の配列は、動的に割り当てられたメモリへのポインタとして使用されます。 「C-Hack」として知られるこの手法は、古いコンパイラで任意の長さの配列を作成するために採用されていました。要素がゼロの配列を宣言すると、コンパイラは配列が存在していたメモリ位置へのポインタを提供します。これにより、開発者は動的割り当てを通じて実行時に配列のサイズを制御できます。
代替アプローチ: 動的割り当て
最新の C で任意の長さの配列を作成するには長さゼロの配列に頼らずに環境を構築するには、動的メモリ割り当てを使用します。指定された長さの配列を含む someData 構造体を割り当てる関数の例を次に示します。
struct someData* mallocSomeData(int size) { struct someData* result = (struct someData*)malloc(sizeof(struct someData) + size * sizeof(BYTE)); if (result) { result->nData = size; } return result; }
この関数は、構造体とその配列にメモリを割り当て、nData メンバーを初期化し、割り当てられた構造体へのポインタを返します。
リファクタリングのアドバイス
リファクタリングするには長さ 0 の配列を含む構造体を使用する場合は、次の手順に従います。
以上がレガシー C/C コードで長さゼロの配列を含む構造体をリファクタリングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。