Die Idee der Funktion besteht darin, die ursprüngliche Liste in X Lists alle in einem einzigen Array ohne zu löschen noch neue Zellen zu erstellen. Die Funktion tun, um seinen Job großartig, aber wenn ich die Lecks mit valgrind oder Dr.-Speicher überprüfen, scheint es einige Leck Probleme zu haben ...Speicherleck mit Listen C++
List* function (List & todivide, int t = 2){
Cell* aux = todivide.l; // l is the head of the list
int tam = (todivide.size()/t == 0) ? todivide.size()/t : todivide.size()/t+1;
List* arrayoflists = new List [tam];
for(int i = 0, k = 0; aux != 0; i++){
if(i%t == 0){
arrayoflists[k].l = aux;
aux = aux->sig;
k++;
}
if(i%t == t-1){
Cell* p = aux->sig;
aux->sig = 0;
aux = p;
}
}
l.l = 0;
return arrayoflists;
}
Ich sehe nichts falsch ... Irgendwelche Ideen?
Vielen Dank im Voraus
Es ist nichts falsch mit dem angezeigten Code. Daher muss das Leck entweder in dem Code sein, der nicht gezeigt wird, oder in Kombination mit dem gezeigten und dem nicht gezeigten Code. Um zu vermeiden, unnötig Zeit mit der Suche nach Speicherlecks zu verschwenden, lernen Sie, wie man 'std :: shared_ptr' verwendet. –
Ich weiß, dass es nicht mit der Hauptfrage zusammenhängt, aber du wolltest nicht schreiben '(todivide.size()% t == 0)'? – StahlRat