我有一个c++应用程序,客户在其中报告了crash.But崩溃不容易重现。在分析了一些日志和所有内容之后,我发现崩溃可能发生在以下代码部分之间。请告诉我,如果我有这些代码语句,有没有可能使应用程序崩溃?
//Tesrt
std::string strAppName = "App1\0";
int nSize = 10;
sprintf_s(szBuff, "The appname %s have %d dependancies ", strAppName.c_str(), nSize);
//Then use the szBuff to log to a text file
//Test end发布于 2012-06-29 19:22:13
问题是您没有提供correct arguments to sprintf_s
int sprintf_s(
char *buffer,
size_t sizeOfBuffer,
const char *format [,
argument] ...
);sprintf_s接受size_t作为它的第二个参数(szBuff的大小),但是您没有提供它。相反,您应该在该参数所在的位置给它一个const char *。对此进行编译的唯一方法是忽略编译器警告。
所以sprintf_s看到的是: buffer打印成大量的字符,允许作为格式字符串进入buffer strAppName.c_str()
换句话说,这不是你想要的。提供szBuff的大小作为第二个参数,我敢打赌您的问题就会消失。
是的,考虑到你所做的一切,我预计到处都会发生崩溃。
https://stackoverflow.com/questions/11260755
复制相似问题