1

调用以下简化函数时,我在最后一条语句中收到 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)。

4

1 回答 1

4

我认为问题在于您发送doubleas3而不是3.0. 法线3将被视为整数,但在test函数中,您正在检索比int大多数平台上更大的双精度数,您最终可能会读取错误的位置,从而导致 EXC_BAD_ACCESS生成运行时信号

于 2012-05-10T09:25:38.233 回答