Visual Studio Express 2012 のデバッガーは次のように述べています。
Unhandled exception at 0x00B8147F in PFPJ.exe: 0xC0000005: Access violation
reading location 0x00000008.
デバッガーが問題であると言うコードの部分は次のとおりです。
(ご存じのとおり、width
とheight
は でグローバルに宣言されmain.cpp
ています。これらの変数を使用するすべての関数はmain.cpp
.
SDL_Surface* bmmap = NULL;
bmmap = SDL_LoadBMP( file );
width = bmmap -> w;
height = bmmap -> h;
具体的にwidth = bmmap -> w
は、エラーを返します。
Problem signature:
Problem Event Name: APPCRASH
Application Name: PFPJ.exe
Application Version: 0.0.0.0
Application Timestamp: 51a57a2e
Fault Module Name: PFPJ.exe
Fault Module Version: 0.0.0.0
Fault Module Timestamp: 51a57a2e
Exception Code: c0000005
Exception Offset: 00001838
OS Version: 6.1.7601.2.1.0.256.1
Locale ID: 1033
Additional Information 1: 0a9e
Additional Information 2: 0a9e372d3b4ad19135b953a78882e789
Additional Information 3: 0a9e
Additional Information 4: 0a9e372d3b4ad19135b953a78882e789
から幅または高さを取得するために私が見つけた他のすべての例は、SDL_Surface*
この表記法を使用しています。何が起こっているのか完全にはわかりません。
私が確信しているのは、私自身のビルトイン ファイル ストリームには、どこで失敗したかを示す出力ファイルがあるということです。double for ループで幅/高さを参照すると、別の関数で失敗します。SDL_Surface 構造体は次のように定義されます:
typedef struct SDL_Surface {
Uint32 flags; /* Read-only */
SDL_PixelFormat *format; /* Read-only */
int w, h; /* Read-only */
Uint16 pitch; /* Read-only */
void *pixels; /* Read-write */
SDL_Rect clip_rect; /* Read-only */
int refcount; /* Read-mostly */
} SDL_Surface;
これは私を吹き飛ばします。このエラーの原因と、これが問題である理由がわかりません。->
表記を使用した関数のコンテキスト内で機能します。surface -> w
幅を取得するために使用する多くのプログラムを見つけましたが、何が問題なのですか?
(私はC / C ++に比較的慣れていないので、洞察が役に立ちます)