LINUX.ORG.RU

История изменений

Исправление vodz, (текущая версия) :

Так, как делают некоторые системные функции. Чтобы внутри есть статический буфер, куда какая-нибудь функция складывает свой результат, но чтобы если ее вызвали из другого потока она не перекрыла результат первого.

Почти все делают. Буфер там int, потому malloc/free на такой размер не нужен, просто меняется глобальная переменная на указатель на память в локальный стек треда. Где не int, те точно помечены как не для тредов и есть модификации с *_r. Так что если надо много памяти, то придётся таки malloc/free аккуратно ручками.

Исходная версия vodz, :

Так, как делают некоторые системные функции. Чтобы внутри есть статический буфер, куда какая-нибудь функция складывает свой результат, но чтобы если ее вызвали из другого потока она не перекрыла результат первого.

Почти все делают. Буфер там int, потому malloc/free на такой размер не нужен, просто меняется глобальная переменная на указатель на память в локальный стек треда. Так что если надо много памяти, то придётся таки malloc/free аккуратно ручками.