Утечка памяти с вектором примитивных значений - PullRequest
0 голосов
/ 14 июля 2020

У меня есть класс, у которого есть векторы примитивных значений с утечкой памяти, и я его не вижу. Раньше он обертывал карту и имел больше функциональных возможностей, но карта просачивалась еще больше. Может кто-нибудь объяснить, где и почему это происходит?

Я делаю это в 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));
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...