При завершении работы я получаю сообщение об утечке памяти, в котором говорится, что у меня 3 утечки определенного объекта. Однако с этим две проблемы.
Это происходит только с перерывами. Я могу запустить свою программу, выполнить точно такую же последовательность шагов (открыть файл данных, отобразить его и снова закрыть), и иногда сообщение появляется, а иногда нет. В этих путях кода нет вызовов random () или другой «недетерминированной» логики.
Проверка кода говорит о том, что сообщенная утечка памяти невозможна; объект создается только внутри определенного класса, и он должным образом освобождается в деструкторе этого класса. (И я создаю более трех объектов родительского класса. И никаких исключений не возникает во время очистки.)
Добавление результатов трассировки в конструктор и деструктор для этого класса показывает, что каждый созданный объект уничтожается, даже если диспетчер памяти сообщает об обратном. Поэтому я могу только заключить, что это ложный положительный результат. Однако добавление «RegisterUnexpectedMemoryLeak (self)» в конструктор приводит к удалению сообщения.
Кто-нибудь видел что-нибудь подобное раньше? Есть идеи, что может быть причиной? Я настолько уверен, насколько это возможно, что объекты не протекают, так что же происходит вместо этого?