【发布时间】:2011-08-07 11:28:30
【问题描述】:
我遇到了问题。 示例:
try
{
char strMes[6];
sprintf_s(strMes, sizeof(strMes), "%s", "012345678");
printf(strMes);
}
catch(...)
{
printf("Wrong\n");
}
在调试环境中导致调试器“缓冲区太小”消息。
在发布环境中导致崩溃。
我尝试将 try-catch 块替换为 __try-__except(EXCEPTION_EXECUTE_HANDLER) 块,但我得到了相同的行为。
我对 sprintf_s 函数有大约 1K 次调用,因此将 sprintf_s 替换为 _snprintf_s 不是我的选择。 (见sprintf_s with a buffer too small)
请帮忙!
【问题讨论】:
-
您期待什么?您正在尝试写入缓冲区的末尾,或者将写入限制为缓冲区的大小(在您的情况下,您可以在一个体面的编辑器中通过简单的搜索/替换来完成)或扩大缓冲区。
-
使缓冲区更大/将
sprintf_s替换为采用相同参数的_snprintf。
标签: c++ error-handling printf