Подождите, вы просили МИНИМАЛЬНЫЙ код иллюстрирующий проблему. Вот он.
Вы ошибаетесь. Это не он. Этот код не иллюстрирует проблему.
Что бы минимальный код мог проиллюстрировать проблему он должен быть реальным.
Воссоздавать картину реального происшествия. Просто не содержать ничего лишнего: такого, что не относится к демонстрации проблемы.
Ну и самое главное, он должен демонстрировать проблему.
...но в первую очередь из-за того, что его МНОГО.
Понятно... что ж, в таком случае остается только эвристика.
Ок, я вас понимаю. Но я спрашивал о том, КАК конкретно проверить указывает ли указатель (масло так маслит
) на свободную память или нет с помощью дебагера если в коде по ходу выполнения НЕТ delet'ов кроме указанного мной в минимальном примере кода?
Самый простой способ - посмотреть в пошаговой отладке на что смотрит указатель. Обычно, если он битый - по указателю будет "непонятная чача".
Первое, что бы я сделал: брякнулся бы в пошаговой отладке перед самой точкой крэша, и в отладчике посмотрел бы: содержатся ли по указателю осмысленные данные. Если нет - указатель однозначно битый.
А попробуйте закомментировать весь код, использующий созданный settings, кроме new/delete и прогнать через valgrind. Интересно, останется ошибка?
ок попробую, напишу результат
Второе, что бы я сделал: в иде запросил бы на имя settings "найти использование".
Во многих случаях это позволяет обнаружить ошибку путем анализа использования без необходимости отключать куски кода.