Komisches Speicherproblem



  • hi!

    Ich hab nen komisches Speicherproblem. Ich allokiere mit new Speicher auf dem heap und speicher den Zeiger darauf in einer Struktur, die ich einer Std::list zum Speichern übergebe:

    // der funktion wird ein zeiger ani übergeben, der daten für die Animation speichert
    meAnim tmp;
    
    tmp.NumTilesToUse = ani->NumUsedTiles;
    
    // TileArray erstellen
    tmp.UseTiles = new unsigned short int[tmp.NumTilesToUse]; // Numtiles.. ist 3
    tmp.UseTiles zeigt auf 0x00d51ef0
    for(int t = 0; t < ptr.NumTilesToUse; t++)
    	ptr.UseTiles[t] = ani->UseTiles[t];		// Tilenummern kopieren, 
                                                           / sind immer 0
    // restlichen ani-daten in tmp speichern
    //...
    
    // Element speichern
    m_AniList.push_back(tmp);
    

    Wenn ich dann auf dieses Element zugreifen will, dann ist nur!, wirklich nur dieses eine Array nicht mehr richtig. Die Adresse ist noch dieselbe. Hier mein code dazu

    void MoveAni(meAnim* ani)
    {
    	// Position aktualisieren
             // Die daten hier sind alle richtig
    	int DistX = ani->EndPos.x - ani->StartPos.x;
    	int DistY = ani->EndPos.y - ani->StartPos.y;
    	ani->CurrentPos.x = ani->StartPos.x + DistX * TimeFactor;
    	ani->CurrentPos.y = ani->StartPos.y + DistY * TimeFactor;
    
             // Die Adresse, auf die UseTiles zeigt, ist auch richtig,
             // aber der Wert an dieser Adresse ist plötzlicn nciht mehr 0 sondern
             // irgendwas mit 57000 oder so ähnlich
    	ani->CurrentTile = ani->UseTiles[int(ani->NumTilesToUse * TimeFactor)];  // Timefactor ist 0
    }
    

    Ich kann mir echt nicht erklären, woran das liegen könnte


Anmelden zum Antworten