В описании getaddrinfo говорится, что
Функция getaddrinfo () выделяет и инициализирует связанный список структур addrinfo, по одному для каждого сетевого адреса, который соответствует узлу и услуге,с учетом любых ограничений, налагаемых подсказками, и возвращает указатель на начало списка в рез.
. Это означает, что вам не нужна никакая другая информация в hints
, кроме строго необходимой (в противном случаефункция может выдавать нежелательный вывод).Кроме того, «реальный» результат функции возвращается в res
, что означает, что текущее содержимое res
перезаписывается, поэтому вам все равно, что там было до вызова функции (пока выне будет интерпретировать это, если функция завершится ошибкой).
Поскольку члены структуры (например, addrinfo
) не инициализируются каким-либо образом при объявлении переменной этого типа, hints
изначально содержит «мусор»"- что бы ни случилось в памяти, где размещена переменная.Таким образом, код вызывает memset
для обнуления всех членов простым / быстрым способом (в отличие от установки переменных-членов в ноль один за другим).