2009-08-26 6 views
2

Visual C++ 6.0のポインタの既定値は何ですか?Visual C++ 6.0のポインタのデフォルト値

私の質問が特に重要なのは、スタック上の変数です。

この場合、myArrayは最初はNULLポインタか、未定義の値がありますか?

double* myArray; 

答えて

6

未定義。
C++では、初期化されていないポインタのデフォルト値は定義されていません。

Visual Studioでデバッグを実行している場合、初期化されていない変数の初期値は0xcdcdcdcdのようなものになることがあります。この値は、変数がスタック上またはヒープ上のどこにあるかによって変化します。しかし、これはリリースビルドには当てはまりません。あなたはそれを頼りにしてはいけません。

Here's some more informationこれらの値については、

0

あなたのmyArrayはガベージ値を持ちます

2

これは未定義です。 VC++ 6.0が特定の値を絶対に使用することが保証されていても、C++標準では未定義です。コンパイラ固有の機能は、すべてのコストをかけて常に避けるべきです。コードを別のコンパイラに移動する必要があるとは思えないかもしれませんが、遅かれ早かれ実行され、中断されます。

そして、それは言うのはとても難しいです。

double* myArray = NULL; 
0

ポインタのデフォルトが宣言されていない場合は、ポインタが「意味(初期化されていないので、値は不定となりますのVisual C++ 6ではありませんゴミ ")。そのため、宣言されたとき(またはクラスのポインタメンバーのコンストラクタの初期化リスト)にポインタを初期化することをお勧めします。

0

ポインタは、実行時にメモリ内の特定の場所を占有するものとして定義されています。その初期値は、その位置にあるビットパターンだけで定義されます。それを事前に決定する方法はありません。

他のところで述べたように、nullの初期値、またはあなたに最も便利なものを宣言します。

関連する問題