質問

私は可変長の配列について懸念があります。アレイを動的に割り当てたい場合は、十分なメモリを割り当てることができない場合はnullを取得し、プログラムでこれに適切に応答できます。可変長さ配列を使用すると、この情報は表示されません。これで何をすべきですか?

役に立ちましたか?

解決

VLAは基本的に常に安全ではないことは正しいです。唯一の例外は、サイズよりも大きくしないようにする場合、固定サイズの配列を作成することができると感じます。その場合、固定サイズの配列を使用することもできます。 VLAが問題を解決できないこと(スタックオーバーフロー)とできることとの違いを生むことができると、ほとんどの場合、VLAを使用しないことをお勧めします。

しかし、VLAタイプが役に立たないという意味ではありません。 VLAは悪い/危険ですが、 ポインタからVLA タイプは非常に便利です。彼らは動的に挿入することを可能にします(via malloc)次のように、次の寸法算術を手動で実行せずに多次元配列

size_t n;
double (*matrix)[n] = malloc(n * sizeof *matrix);

n-by-nマトリックスをアドレス指定できるようにするには matrix[i][j].

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top