Laufzeitfehler: Zugriffsverletzung bei Verwendung von .push_back () mit einem std :: vector?

StackOverflow https://stackoverflow.com/questions/1804148

  •  05-07-2019
  •  | 
  •  

Frage

Ich habe einen Vektor, von std::vector<LPDIRECT3DTEXTURE9> textures; definiert Später bin ich ein LPDIRECT3DTEXTURE9 Objekt, um es vorbei, wie so textures.push_back(texture); Hier ist ein Beispiel dafür:

void SpriteManager::AddSprite(float x, float y, float z, LPDIRECT3DTEXTURE9 texture)
{
    //snip
    textures.push_back(texture);
    //snip
}

Dies verursacht einen Laufzeitfehler. Es ist an der size() Funktion in der Vektorklasse zu brechen. Warum könnte dies geschehen?

Edit:

Ich betreibe auch in ein identisches Problem auf einem Vektor von D3DXVECTOR3 Objekte die gleiche Operation ausführen. Da LPDIRECT3DTEXTURE9 ein Zeiger auf ein IDIRECT3DTEXTURE9 ist, sollte ich, dass stattdessen verwenden?

War es hilfreich?

Lösung

Bei weitem der häufigste Grund ist, dass Sie eigentlich nicht haben einen Vektor. In diesem Fall erscheint textures ein Mitglied der SpriteManager Klasse. Also, das vorschlägt, dass Sie tatsächlich haben kein SpriteManager Objekt entweder. Ist der this Zeiger gültig?

Andere Tipps

Nun, da LPDIRECT3DTEXTURE9 durch seinen ungarischen Namen ein Zeiger ist und nicht ein Objekt (wie Sie sich darauf beziehen), meine Vermutung ist, dass Sie rund um ungültige Zeiger sind vorbei, die bereits getan haben einen Fandango auf Ihrem armen Objekt Vektor, bevor Sie push_back () aufrufen.

Ich könnte falsch sein, aber das ist so viel wie aus den Informationen, die Sie sagte. Und, ja, push_back () sollte nur in der Lage sein, zum Scheitern verurteilt, wenn Sie aus dem Speicher oder versuchen, sind ein nicht kopierbar oder nicht übertragbar zu verwenden Objekt in dem Vektor, und dann nicht durch eine Zugriffsverletzung auf.

Ihr Vektor wurde beschädigt. Ich würde vorschlagen, einen Datenbeobachtungspunkt auf seinen Einbauten setzen, um zu sehen, was auf sie stampft (in einem Debugger).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top