Я разработал свое приложение для запуска таким образом, чтобы я вызывал необработанный указатель на класс, производный от 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 () не вызывается, поскольку сообщение не распечатывается.
ИнструментКажется, профилировщик моего приложения не согласен с утечкой памяти.Может кто-нибудь, пожалуйста, помогите мне понять?
Спасибо, Амин