vsprintf的threadsafe版本计算fmt / args的长度

时间:2014-11-27 14:54:35

标签: c windows

在UNIX环境中,我会使用带有短缓冲区的vsnprintf()来获取结果字符串的长度。有了这些信息,我可以用malloc()足够的内存来做实际的格式化。喜欢在:

va_list  args;
char    *ptr = NULL;
int   len = 0;
char buf[2];

va_start(args, fmt);
len = vsnprintf(buf, 1, fmt, args);

if(len > 0) {
  ptr = malloc(len + 1, "tempdata", 0L);
  vsprintf(ptr, fmt, args);
}
va_end(args);

我的问题是,我使用的是一个非常古老的Windows环境(Microsoft Visual C ++ 6.0 / 1998),其中只有函数_vsnprintf()需要足够大的内存来进行计数。使用相同的静态缓冲区计算长度是不是线程安全?

0 个答案:

没有答案