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