Я просматривал Руководство Биджа по сетевому программированию , и на странице 45 был написан следующий фрагмент кода:
struct pollfd *pfds = malloc(sizeof *pfds * fd_size);
Мне было интересно, должно ли это быть
struct pollfd *pfds = malloc(sizeof(struct pollfd) * fd_size);
Поскольку mallo c возвращает указатель на блок памяти указанного размера.
Поскольку * pfds является указателем, его размер будет равен 4 или 8 байтов, поэтому Я не могу понять, почему его размер учитывается при создании массива.