В большинстве случаев, когда происходит что-то странное и непонятное, это происходит из-за чего-то другого.
В вашем коде может быть несколько висячих указателей (даже вдалииз этой функции), указывая на некоторые случайные ячейки памяти.
Возможно, вы использовали такой висячий указатель, и это могло бы привести к перезаписи некоторых необходимых вам ячеек памяти.Результатом этого является то, что вы изменили поведение вашей программы, изменив некоторую переменную, определенную в другом месте, некоторые константы или даже некоторый код!
Я бы предложил вам отладить ваше приложение, используя какой-либо инструмент, способный проверять исообщать об ошибочных обращениях к памяти, например Valgrind .
В любом случае, если вы сможете локализовать источник вашего сбоя и написать действительно небольшой фрагмент кода, который вылетит, опубликуйте его здесь- это может быть простой ошибкой в вашей функции, хотя это кажется маловероятным из вашего описания.