У меня есть класс, у которого есть векторы примитивных значений с утечкой памяти, и я его не вижу. Раньше он обертывал карту и имел больше функциональных возможностей, но карта просачивалась еще больше. Может кто-нибудь объяснить, где и почему это происходит?
Я делаю это в XCode и использую течеискатель XCode. Объекты размещаются по адресу
this->values.push_back(range.at(idx));
SimpleMap.hpp
class SimpleMap
{
private:
long offset = 0;
public:
SimpleMap() {};
~ SimpleMap();
vector<double> indexVals;
vector<double> values;
double value(double at);
void clear();
void createMapFromIndices(shared_ptr<vector<long>> indices, vector<long> &range);
};
SimpleMap. cpp
double SimpleMap::value(double at)
{
long idx = at - offset;
if (this->indexVals.at(idx) == at)
{
return this->values.at(idx);
}
throw BoundaryException("No value at Index");
}
SimpleMap::~SimpleMap()
{
this->clear();
}
void SimpleMap::clear()
{
this->indexVals.clear();
this->indexVals.shrink_to_fit();
this->values.clear();
this->values.shrink_to_fit();
}
void SimpleMap::createMapFromIndices(shared_ptr<vector<long>> indices, vector<long> &range)
{
this->clear();
this->offset = indices->front();
for (long idx: *indices)
{
this->indexVals.push_back(idx);
this->values.push_back(range.at(idx));
}
}