私はめったに未定義の動作(セグメンテーションフォルト)を引き起こす巨大なソースコードを持っています。私は原因を追跡しようとしましたが、未定義の動作が起こることはまれであるため、これは困難でした。私はソースコードを見直しましたが、空の配列の定義が含まれていますが、ソースコードではまったく使用されていませんでした。配列が使用されていなくても、空の配列を定義することは未定義の動作の原因になりますか?
struct any array[] = {};
私は空の配列を定義することC.では許可されていないことを知っているしかし、私は、これは、配列が使用されていない、特にこと、未定義の動作の原因である可能性がありますかはわかりません。
空の配列を定義すると、配列が使用されていなくても未定義の動作が発生する可能性がありますか?
これはCでコンパイルするべきではありません。コンパイルするとコンパイルの拡張機能なので、コンパイラのドキュメントを見て、それが何であるかを知る必要があります。しかし、コンパイラがそれを受け入れるなら、未定義の動作である可能性は低いです。だから、あなたは「OK」になる可能性がありますが、使用されていない場合は単にそれを削除しないでください。 –
@JonathanLeffler私はそれを削除しますが、それがUBの原因であるかどうか確かめたいのですが – MOHAMED
それがUBのソースだったら驚くでしょう。何か別のものを探してください。 –