fixed memory leak in GBTrees
This commit is contained in:
parent
94cf5430d0
commit
1b8c2589c0
@ -1292,13 +1292,18 @@ CvGBTrees::calc_error( CvMLData* _data, int type, std::vector<float> *resp )
|
|||||||
return -FLT_MAX;
|
return -FLT_MAX;
|
||||||
|
|
||||||
float* pred_resp = 0;
|
float* pred_resp = 0;
|
||||||
|
bool needsFreeing = false;
|
||||||
|
|
||||||
if (resp)
|
if (resp)
|
||||||
{
|
{
|
||||||
resp->resize(n);
|
resp->resize(n);
|
||||||
pred_resp = &((*resp)[0]);
|
pred_resp = &((*resp)[0]);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
pred_resp = new float[n];
|
pred_resp = new float[n];
|
||||||
|
needsFreeing = true;
|
||||||
|
}
|
||||||
|
|
||||||
Sample_predictor predictor = Sample_predictor(this, pred_resp, _data->get_values(),
|
Sample_predictor predictor = Sample_predictor(this, pred_resp, _data->get_values(),
|
||||||
_data->get_missing(), _sample_idx);
|
_data->get_missing(), _sample_idx);
|
||||||
@ -1331,6 +1336,9 @@ CvGBTrees::calc_error( CvMLData* _data, int type, std::vector<float> *resp )
|
|||||||
err = err / (float)n;
|
err = err / (float)n;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (needsFreeing)
|
||||||
|
delete[]pred_resp;
|
||||||
|
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user