この関数の考え方は、Xリストの元のリストをすべて削除したり、新しいセルを作成せずに1つの配列に集めることです。 ...私が間違って何も見えない任意のアイデアを 機能は、彼の仕事は素晴らしいんが、私は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