Поиск undefined behavior или хана стеку

Имеется простой код типа

int main(){
...
//Куча инициализации наверху длиной 10к строк
    char* settints;
    fillSettings(settings);
}

При вызове функции fillSettings() в рантайме падает с ошибкой double free or memory corruption, однако если добавить перед вызовом простую константу, например char a = '22';, то все компилится, собирается и в рантайме не падает. Очевидно что где-то что-то портит стек или вызывает UB, которое приводит программму в такое поведение. Ясен перец что компилятор такое не ловит и ошибок не выдаст. У меня вопрос в следующем: как такие ошибки искать? Если ли какие-то рекомендации, способы, уловки, возможно инструменты для поиска и устранения таких ошибок? Или хотябы подскажите что может так влиять на поведение програмы.(Про не возвращаемое значение из функции когда она должна вернуть я в курсе)


Ответы (0 шт):