0

以下に書かれたコードがあり、それで立ち往生しています。私は以前に別のコンパイラでそれを行ったことがありますが、現在は 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 クラスへのポインターをインスタンス化しないか、非ポインター変数を使用してクラスをコピーすることができましたが、参照の利点を失っていたためです。0xC00000050 に近いので、アドレス指定しようとしている NULL ポインターがあることを意味します。私はそれを心に留めておきます。

4

0 に答える 0