Необработанный указатель на синглтон и утечку памяти: Xcode не показывает утечки памяти - PullRequest
0 голосов
/ 27 сентября 2019

Я разработал свое приложение для запуска таким образом, чтобы я вызывал необработанный указатель на класс, производный от Singleton:

class SimulatedIndexFixingStore : public Singleton<SimulatedIndexFixingStore>
        {
            private:
                friend Singleton<SimulatedIndexFixingStore>;

                typedef std::unordered_map<std::string, std::unordered_map<int, std::map<Date, double>>> Dictionary;

                mutable Dictionary simulatedFixings_;

                SimulatedIndexFixingStore& operator=(const SimulatedIndexFixingStore& ) = delete;

                SimulatedIndexFixingStore(const SimulatedIndexFixingStore& ) = delete;

                SimulatedIndexFixingStore();
                ~SimulatedIndexFixingStore()
                {
                    std::cout << "\nCalling destructor of store...\n";
                }

            public:

                // creates raw pointers to this store and passes them around...
                static SimulatedIndexFixingStore* createPointerToStore()
                {
                    auto tmp = new SimulatedIndexFixingStore() <----- memory allocation on the heap!;
                    return tmp;
                }

        };

Затем я использую необработанный указатель, сгенерированный статической функцией-членом SimulatedIndexFixingStore * createPointerToStore ()и передать их по моему заявлению.

Вопрос:

  • Я не вызываю delete для указателя до выхода из функции Main (), так как это вызовет деструктор в статическом экземпляре Singleton, поэтомуэто означает, что в моем приложении есть утечка памяти.Верный?

  • Я точно знаю, что деструктор ~ SimulatedIndexFixingStore () не вызывается, поскольку сообщение не распечатывается.

  • ИнструментКажется, профилировщик моего приложения не согласен с утечкой памяти.Может кто-нибудь, пожалуйста, помогите мне понять?

Спасибо, Амин

...