Идея функции состоит в том, чтобы разделить исходный список в X. Списки объединяются в один массив без удаления или создания новых ячеек. Функции делать свою работу великолепно, но когда я проверить течи Valgrind или доктора-память, кажется, есть некоторые проблемы утечки ...Утечка памяти со списками 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;
}
Я не вижу ничего плохого ... Любые идеи?
Заранее спасибо
Нет ничего плохого в отображаемом коде. Следовательно, утечка должна быть либо в коде, который не показан, либо в комбинации с показанным и не показанным кодом. Чтобы избежать бесполезного траты времени на поиск утечек памяти, узнайте, как использовать 'std :: shared_ptr'. –
Я знаю, что это не связано с основным вопросом, но вы не хотите писать '(todivide.size()% t == 0)'? – StahlRat