Предупреждения, такие как «преобразование из« int »в« void »большего размера» и «преобразование из« size_t »в« int », возможная потеря данных» почти наверняка означают, что вы случайно компилируете свое приложение как64-битный.Они пытаются сказать, что размер int (обычно 32 бита) и size_t или void различаются.В 32-битной компиляции size_t обычно будет того же размера, что и int, а в 64-битной - 64-битной.То же самое относится и к типам указателей, таким как void *.
. Сначала я бы дважды проверил, действительно ли ваше приложение работает в 32-битном режиме.Есть ли что-то вроде unix-файла «file», который вы можете запустить, чтобы проверить формат исполняемого файла?
После проверки я могу подумать о двух возможных причинах переполнения стека: так как код, который вы показываете, находится в malloc, возможно, у вас естьошибка скрытой памяти кучи, которая теперь появляется в новой среде.Если он разрушает часть стека, он может выглядеть как переполненный.
С другой стороны, вы можете непреднамеренно бесконечно возвращаться (опять же, возможно, из-за незначительного изменения в среде сборки) и фактически израсходовать весь свой стек.Бесконечная рекурсия может занимать достаточно много места в стеке.