Visual Studio 2012で実行時に次のコードがクラッシュするのはなぜですか?実際に使用していなくても、初期化されていない変数が原因でコードがクラッシュする
void foo(void* ptr)
{
}
int main()
{
void* ptr;
foo(ptr);
}
ランタイムチェックの失敗#3 - 変数 'ptr' は が初期化されずに使用されています。私はこのエラーが「デフォルト」に「Basicランタイムチェック」オプションを設定することで無効にすることができますが、私は私が指定したデリファレンス実際にないとき、私はこのエラーを持つべき理由何らかの理由が表示されないことを知ってい
ポインタ。
意図的な動作ですか?
確かに、値でポインタ値を渡しています。このようなコードを書く必要がある理由は何もありません。さて、それを習慣にして、メッセンジャーを撃たないでください。 –
実際には関数呼び出し時に_used_です。 –
値が不定である式を評価しています。スタンダードはそれがUBだと言います。それがUBでない場合、その価値は何であると定義されていますか? –