[mlpack-svn] [MLPACK] #310: memory leak in NeighborSearch
MLPACK Trac
trac at coffeetalk-1.cc.gatech.edu
Mon Nov 18 02:09:56 EST 2013
#310: memory leak in NeighborSearch
------------------------+---------------------------------------------------
Reporter: bianjiang | Owner:
Type: defect | Status: new
Priority: major | Milestone:
Component: mlpack | Resolution:
Keywords: | Blocking:
Blocked By: |
------------------------+---------------------------------------------------
Comment (by bianjiang):
Apparently, if you pass in a referenceTree, rather than just use the
constructor, it doesn't leak... The following code if fine.
{{{
AllkNN* allknn = NULL;
std::vector<size_t> oldFromNewRefs;
BinarySpaceTree<bound::HRectBound<2>,
NeighborSearchStat<NearestNeighborSort> >
refTree(data, oldFromNewRefs, leafSize);
allknn = new AllkNN(&refTree, data, false);
}}}
Trees created from the following constructor not being deleted?
{{{
// Construct the object.
template<typename SortPolicy, typename MetricType, typename TreeType>
NeighborSearch<SortPolicy, MetricType, TreeType>::
NeighborSearch(const typename TreeType::Mat& referenceSet,
const typename TreeType::Mat& querySet,
const bool naive,
const bool singleMode,
const size_t leafSize,
const MetricType metric) :
referenceCopy(referenceSet),
queryCopy(querySet),
referenceSet(referenceCopy),
querySet(queryCopy),
referenceTree(NULL),
queryTree(NULL),
treeOwner(true), // False if a tree was passed.
hasQuerySet(true),
naive(naive),
singleMode(!naive && singleMode), // No single mode if naive.
metric(metric),
numberOfPrunes(0)
{
// C++11 will allow us to call out to other constructors so we can avoid
this
// copypasta problem.
// We'll time tree building, but only if we are building trees.
Timer::Start("tree_building");
// Construct as a naive object if we need to.
referenceTree = new TreeType(referenceCopy, oldFromNewReferences,
(naive ? referenceCopy.n_cols : leafSize));
if (!singleMode)
queryTree = new TreeType(queryCopy, oldFromNewQueries,
(naive ? querySet.n_cols : leafSize));
// Stop the timer we started above (if we need to).
Timer::Stop("tree_building");
}
}}}
--
Ticket URL: <http://trac.research.cc.gatech.edu/fastlab/ticket/310#comment:2>
MLPACK <www.fast-lab.org>
MLPACK is an intuitive, fast, and scalable C++ machine learning library developed at Georgia Tech.
More information about the mlpack-svn
mailing list