sprintf
线程安全吗?
//Global log buffer
char logBuffer[20];
logStatus (char * status, int length)
{
snprintf(logBuffer, 19, status);
printf ("%s\n", logBuffer);
}
该函数的线程安全完全依赖于snprintf
/sprintf
的线程安全。
更新:
谢谢你的回答。
我不介意,如果实际内容 gts 搞砸了。但是想确认在这种情况下,当多个线程试图写入 logBuffer
时,sprintf 不会导致超过 20 个字节的内存损坏/缓冲区溢出?
最佳答案
多线程使用snprintf()
没有问题。但是这里您正在写入一个共享字符串缓冲区,我假设它是跨线程共享的。
因此您对此函数的使用不是线程安全的。
关于c - sprintf 线程安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13386352/