#define MAX_LENGTH_STRING 4096
void BugCode()
{
char szLine[MAX_LENGTH_STRING] = {0};
char szSelection[MAX_LENGTH_STRING] = {0};
va_list my_args;
szSelection[0]= 0xe7 ;
szSelection[1]= 0xac ;
szSelection[2]= 0xac ;
szSelection[3]= 0xe4 ;
szSelection[4]= 0xb8 ;
szSelection[5]= 0x80 ;
szSelection[6]= 0xe5 ;
szSelection[7]= 0x8d ;
szSelection[8]= 0x95 ;
szSelection[9]= 0x00 ;
va_start(my_args, szSelection);
#ifdef WIN32
_vsnprintf(szLine, MAX_LENGTH_STRING-1, szSelection, my_args);
#else
vsnprintf(szLine, MAX_LENGTH_STRING - 1, szSelection, my_args);
#endif
}
BugCode()会在_vsnprintf()崩溃 但是,如果我将这些代码复制并粘贴到一个简单的项目中,它就能很好地运行......
答案 0 :(得分:2)
您没有正确使用va_start
。 va_start
(和va_list
)只能用于variadic function arguments。将它们用于任何其他目的是未定义的行为。