Что означает "статически размещенный" именно в libc? Один на экземпляр библиотеки? Один на экземпляр программы?

В (g)libc, например, в функциях времени и даты, таких как местное время, в руководстве говорится:

Возвращаемое значение указывает на статически размещенную строку, которая может быть перезаписана последующими вызовами любой из функций даты и времени.

Насколько я знаю, моя программа однопоточная. Безопасно ли мне использовать такие функции MT-Unsafe, как asctime или localtime?

Даже если в памяти есть только 1 (g) экземпляр библиотеки libc? (Т.е. как динамическая библиотека.)

Означает ли "статический" "статический для моей программы" (для каждого экземпляра программы выделяется новый экземпляр буфера...), "статический для процесса" (один экземпляр буфера на процесс - это предполагает) или статический для (libc) библиотека (столько экземпляров буфера, сколько экземпляров библиотеки (-fragment))?

(Я знаю о вопросе № 8694365, но мой немного отличается.)

1 ответ

Глобальные (определенные вне функции) и статические (определенные внутри функции) выделяются один раз для каждой программы. Иначе, asctime было бы совершенно непригодным для использования, так как вы не можете быть уверены, что нет другой программы, вызывающей эту функцию в то же время, что и ваша.

Другие вопросы по тегам