以下に書かれたコードがあり、それで立ち往生しています。私は以前に別のコンパイラでそれを行ったことがありますが、現在は Visual C++ に移行しています。この関数を呼び出そうとするたびに、次のエラーが表示されます。
SeaQuest.exe の 0x0076e124 で未処理の例外: 0xC0000005: アクセス違反書き込み場所 0xccccccd0.
また、D3DXGetImageInfoFromFileA の構文を正しく記述しました。
class Texture
{
private:
D3DXIMAGE_INFO m_ImageInfo;
public:
bool GetImageInfo(char* filename);
};
bool Texture::GetImageInfo(char* filename)
{
if((D3DXGetImageInfoFromFileA(filename, &m_ImageInfo)) != D3D_OK)
return false;
}
DirectX デバッグ出力も追跡しましたが、何も表示されません。
アップデート
ここで、GetImageInfo の実装で D3DXIMAGE_INFO ローカル変数を定義し、m_ImageInfo の代わりにアドレス指定しました。できます!。Access violation writing
そのために立ち上がる私のプライベートメンバーの何が問題なのかわかりません。誰かが私を案内してくれることを願っています。
答え
別のクラスで Texture クラスをポインター変数として使用していましたが、その理由は、新しい Texture クラスへのポインターをインスタンス化しないか、非ポインター変数を使用してクラスをコピーすることができましたが、参照の利点を失っていたためです。0xC0000005
0 に近いので、アドレス指定しようとしている NULL ポインターがあることを意味します。私はそれを心に留めておきます。