Действительно трудно сказать без кода. Вещи, которые могут пойти не так
- неявные преобразования. в большинстве мест узкие типы данных преобразуются в
signed
или unsigned
. Если у вас есть неявные предположения относительно их ширины, у вас могут быть все виды вещей: переполнение, неопределенное поведение, специфичное для компилятора поведение
- отсутствуют прототипы функций. oldish C предполагает, что функция, которую он не знает, возвращает
int
. Если в действительности он возвращает указатель (например), у вас проблемы.
- указатель на
int
преобразование (или наоборот)
Ваш компилятор довольно старый. Вы, вероятно, должны попытаться получить что-то более свежее, если это возможно, или попробовать что-то другое, например clang
.
Скомпилируйте все предупреждения на -Wall -Wextra
... и работайте над своим кодом, пока он вообще не будет предупрежден.
Если ваша проблема не устранена, запустите ее с valgrind
, как предложено @unwind.
Тогда с какой-то конкретной проблемой здесь, чтобы мы могли вам помочь.