Я получаю ошибку нарушения прав доступа (используя Microsoft Visual C++ 2005) при передаче параметра va_list из одной функции-члена в другую по значению. Если я передам его по ссылке, все работает так, как ожидалось, но va_list не должен передаваться по ссылке, не так ли?Нарушение прав доступа при передаче va_list по значению
class A
{
public:
char * getformatted(char const * a_format, ...)
{
va_list argp;
va_start(argp, a_format);
char * result = getformatted(a_format, argp);
va_end(argp);
return result;
}
char * getformatted(char const * a_format, va_list /*&*/ a_args)
{
static char buffer[ 256 ];
int length = vsprintf(buffer, a_format, a_args); // Access violation.
return buffer;
}
};
int main(int argc, char * argv[])
{
char * str = A().getformatted("foo%s", "bar");
return 0;
}