Я верю просто табличному содержанию. Например, если Вы распечатали таблицу базы данных или подобные электронной таблице данные к HTML.
Причина, по которой он не использует кучу, - это соответствие стандартам (POSIX) и другим системам. Интерфейс не такой, что вы должны освобождать возвращаемый буфер. Он предполагает статическое хранилище ..
Но, объявляя его как локальный поток (с __ thread
), два потока не конфликтуют друг с другом, если они оба вызывают функцию. Это обходной путь glibc для неисправности интерфейса.
Это правда, что это не реентерабельность и не соответствует духу этого термина. Если у вас есть рекурсивная функция, которая ее вызывает, вы не можете рассчитывать на то, что буфер будет одинаковым между вызовами. Но его можно использовать в нескольких потоках, что часто бывает достаточно.
РЕДАКТИРОВАТЬ: Кстати, я только что вспомнил, есть более новая версия этой функции, которая использует буфер, предоставляемый вызывающей стороной. См. inet_ntop ()
.