Черт, неужели нельзя переделать код на использование & а не *, в идеале вообще избавиться от malloc и free а организовать код чтобы освобождение было автоматическим, или переместить логику в классы и деструкторы.
Причина может быть страшнее - где то порушена память heap но узнаете вы об этом когда станет совсем поздно - т.е. в другом кучке кода.