In meinem C++ Spiel habe ich ein Array von Zeigern auf EnemyType
s. Früher habe ich von Visual Leak Detector Speicherlecks zu erkennen, und es sagt mir, ich habe ein Leck in dem folgenden Code:C++ Speicherverlust beim Erstellen eines Arrays
vector<EnemyType*> enemyTypes(number_of_lines);
for (int i = 0; i < number_of_lines; i++)
{
enemyTypes[i] = new EnemyType();
}
Sagen wir number_of_lines
3 in diesem Fall. Wie ist es möglich, dass ich hier ein Leck erstelle? Kann ich etwas dagegen tun?
Ich habe C++ vor ungefähr einem Monat gelernt und lerne immer noch jeden Tag, aber ich kann einige Dinge nicht verstehen (so), ohne dass mich jemand erklärt.
EDIT: Ich habe den Code geändert, um einen Vektor anstelle einer einfachen Array zu verwenden.
Haben Sie Vektoren ausprobiert? –
Sie erstellen nur ein Leck, wenn Sie vergessen, den Speicher freizugeben. Der obige Code zeigt dieses Problem nicht. Erstellen Sie ein MCVE: http://StackOverflow.com/Help/Mcve –
Wenn 'enemyTypes' lokal für eine Methode ist und Sie nicht jedes Element (und das Array selbst) löschen, dann haben Sie ein Leck. Erwägen Sie die Verwendung eines 'std :: vector', dynamischer Speicher ist nicht immer wünschenswert, und wenn er verwendet wird, könnten intelligente Smartpointer den Verwaltungsteil nutzen. –
Jack