2016-04-29 7 views
-2

私はC++に新しいですし、興味があります..C++のポインタ、intitializingオブジェクトなど

はなぜ、実行時にこのコンパイルが、クラッシュを行います。

wxBitmap *bmp; 
*bmp = wxNullBitmap; //wxNullBitmap is type wxBitmap with null data 

これは、コンパイルして正常に動作だろうというとき:

wxBitmap bmp; 
    bmp = wxNullBitmap; 

それは同じものではありませんか?

+0

参照[初期化されていないポインタを逆参照することは未定義の動作であると正確には言いますか?](0120-18752) –

答えて

2

ポインタはメモリのアドレスです。最初の例では、ポインタを作成しますが、値は未定義です。それはどこを指していますか?そして、あなたは、メモリ内のいくつかのランダムな、未定義の場所にオブジェクトをコピーしようとします。 OSはあなたにそれをさせません。

+2

"ポインタはメモリのアドレスです" – MikeCAT

+0

を参照してください。私はコマンドwxBitmap * bmpを考えていたと思います。メモリ内にwxBitmapオブジェクト自体のための領域を作成します。したがって、メモリロケーションを作成するには "* bmp = new wxBitmap()"を使用する必要がありますか? – user1489223

+0

@MikeCAT簡単な回答を保つようにしました。 –

関連する問題