gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 03:45:07 25 4
gpt4 key购买 nike

使用 Borland C++ Builder 2009

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

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 强制执行它吗?

练习的重点是实现一个回退场景,以应对可能出现一两个异常情况的缓冲区太小,以便我可以为该函数分配更多内存并重试。但这种机制似乎根本不起作用。

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

最佳答案

您可以使用 vswprintf_s .失败时返回负值

关于c++ - 没有缓冲区大小的 vswprintf() 在小缓冲区而不是 EOF 上崩溃。如何传递缓冲区大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35050755/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com