调用以下简化函数时,在最后一个语句中出现EXC_BAD_ACCESS错误:
void test(char *param, ...) {
va_list vl;
va_start(vl, param);
double a = va_arg(vl, double);
double b = va_arg(vl, double);
double *result = va_arg(vl, double*);
*result = a*b;
va_end(vl);
}
使用以下函数调用该函数:
double result;
test("blub", 3, 3, &result);
我正在使用Xcode的clang编译器(Apple LLVM编译器3.1)。
答案 0 :(得分:4)
我认为问题出在double
上3
而不是3.0
。普通3
将被视为整数,但在test
函数中,您检索的是在大多数平台上大于int
的双精度数,并且您可能最终会读取错误的位置生成EXC_BAD_ACCESS
运行时信号