2016-07-15 1 views
1

私はCを学ぼうとしており、インターネット上で見つけた本でいくつかの演習を試みています。値は何ですか?

この質問は、専門家にとってはおそらく簡単です。いくつかの変数を見ると、ウォッチウィンドウに表示される値は何ですか?私は値が変数に代入される前の状態を参照しています。彼らは通常約10桁の長い数字で、時には否定的です。

これは愚かな疑問に思えるかもしれませんが、私は彼らが何であるか不思議です。最初は私は彼らがアドレスだと思った。

+5

おそらく、変数が初期化される前にメモリにあったものがすべて表示されている可能性があります。 – NathanOliver

+1

スカラー型を持つデフォルトで初期化された変数の値は不定です。 – MikeCAT

+3

これは関連しています:http://stackoverflow.com/questions/1597405/what-happens-to-a-declared-uninitialized-variable-in-c-does-it-have-a-value – nicks

答えて

2

メモリが割り当て解除または再割り当てされたときに特定の値にリセットされないため、そのメモリを使用していた最後のコードによって残りの値が表示されます。

セキュリティ上の問題が発生することがあります。たとえば、そのメモリにパスワードまたはその他の機密情報が含まれている場合。したがって、特定のアプリケーションでは、メモリを解放する前にメモリをゼロ・アウトすることが重要です。

2

変数に値を割り当てる前に、以前にそのメモリにあったものがあります。 1つの関数内の変数のメモリが、他の関数内の異なる型の変数に使用された可能性が非常に高いです。以前の使用がfloatまたはポインタの場合で、intに使用している場合、値は非常にランダムに見えます。

関連する問題