Вот проблема:
Существует как минимум 2 способа выделения памяти, которые вы можете использовать, malloc
и calloc
.Разница в том, что malloc
НЕ инициализирует (или не устанавливает) успешно выделенную память для чего-либо.Как объясняет @EricPostpischil, существует неопределенный явный или неявный эффект для блока памяти, специфичный для компилятора в этой позиции компиляции.
, тогда как calloc
устанавливает успешно распределенный блок памяти равным нулю.Обратите внимание, что аргументы немного отличаются.
Возвращаясь к вашей проблеме, в Linux malloc
просто выделил блок памяти с нулем в нем, тогда как на платформе macos что-то было в нем.
Используйте calloc
, если вам это нужно, в противном случае введите memset
0 для выделенного блока памяти.