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