Функция malloc
выделяет байты и принимает в качестве входных данных количество байтов, которое вы хотите выделить. Оператор sizeof
возвращает количество байтов для данного типа. В этом случае char
равен 1 байту, но в случае int
это, скорее всего, 4 байта, или double
, скорее всего, 8 байтов. Выражение n * sizeof(char)
преобразует число char
в желаемое количество байтов.
В проиллюстрированном случае, используя char
, вычисление количества байтов, вероятно, не требуется, , но это следует сделать, поскольку это помогает передать ваше намерение.
Что делает выражение, так это выделяет необходимый объем памяти, необходимый для хранения не более n
числа char
, и возвращает вам указатель buf
на начало этой выделенной памяти.