首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有缓冲区大小的vswprintf()在小缓冲区而不是EOF上崩溃。如何传递缓冲区大小

没有缓冲区大小的vswprintf()在小缓冲区而不是EOF上崩溃。如何传递缓冲区大小
EN

Stack Overflow用户
提问于 2016-01-28 08:22:03
回答 1查看 254关注 0票数 1

使用Borland C++ Builder2009

我根据RAD Studio的帮助(F1)使用vswprintf:

代码语言:javascript
复制
int vswprintf(wchar_t *buffer, const wchar_t *format, va_list arglist); 

到目前为止,我一直提供一个很大的缓冲区wchar_t OutputStr[1000],没有任何问题。作为一个测试,我想做一个改进的动作,我尝试了一个小的缓冲区wchar_t OutputStr[12],注意到程序完全崩溃了。即使是try{}catch(...){}也没有捕捉到它。Codeguard报告memcpy()失败,这似乎是内部实现。我原以为返回值是EOF

当在线搜索vswprintf时,我发现c++变体将缓冲区大小作为输入,但我似乎无法说服我的编译器使用该变体?你知道如何使用BCB2009来强制它吗?

整个练习的重点是实现一个回退方案,当缓冲区太小时,可能出现一两个异常情况,这样我就可以为函数分配更多的内存,然后再试一次。但这种机制似乎根本不起作用。

也不确定如何最好地测试所需的确切字节/字符数量?

EN

回答 1

Stack Overflow用户

发布于 2016-01-28 08:42:10

您可以使用vswprintf_s。它在失败时返回负值

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35050755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档