Возможно просто другая реализация malloc. Предположительно, Mac malloc выравнивается по большим границам, и поэтому определение указателя, который вы передаёте бесплатно, не может быть правильным, так как имеет неправильное выравнивание
ОДНАКО, это говорит о том, что вы передаете free () указатель, который не пришел из malloc (). Это, безусловно, признак ошибки, и, вероятно, это происходит на всех ваших платформах.