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