char buffer[1000] = {0};
これは1000要素をすべて0に初期化しますか?そうでない場合、なぜですか?C++配列を一定時間で初期化する
はOにこれを最適化することができ、コンパイラのように思える(1)次の事実に基づいて:
- アレイは固定サイズであり、コンパイル時に知られている配列をスタック上に配置されている 実行可能ファイルのデータセグメントにこのデータが含まれている可能性があります。これは、すでに0で埋められているデータのまとまりとして(Windows上では)です。
答えはどのコンパイラでも一般的ですが、私は特にWindows上のMSVCコンパイラ(任意のバージョン)でテストされた回答に興味があります。
ボーナスポイント:詳細については、記事、ホワイトペーパーなどへのリンクが大変ありがとうございます。
これはどんなコンテキストですか?静的? – user7116
1つのパラグラフ –
@ n.mでO表記と "コンパイル時間"について話すのは意味がありません。私はコンパイル時間やパフォーマンスのように "コンパイル時間"に言及していません、私はコンパイルの瞬間を表すために "コンパイル時間"を参照しています。 –