【发布时间】:2016-06-15 11:02:42
【问题描述】:
该函数的思想是将原始列表分成X个列表,全部聚集在一个数组中,既不删除也不创建新单元格。 该功能做得很好,但是当我用 valgrind 或 Dr. Memory 检查泄漏时,它似乎有一些泄漏问题......
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)吗?
标签: c++ memory-leaks