Android NDK C库导致seg错误

时间:2012-07-02 09:10:22

标签: android c sigsegv android-ndk

我在使用Android NDK的库中使用c代码时遇到了一些问题。

它适用于模拟器,但不适用于真实设备。它给了我一个“libc - 致命信号11”(SIGSEGV)

我已将问题追溯到库中的一段代码,但我无法理解第二行的作用。

以下是代码:

int lookup_mpz(mpz_t z, const char *(*tab)(const char *), const char *key) {
  const char *data= tab(key); //--> Causes SEGV
  if (!data) {
    pbc_error("missing param: `%s'", key);
    return 1;
  }
  mpz_set_str(z, tab(key), 0);
  return 0;
}

1 个答案:

答案 0 :(得分:2)

第二行是通过名为tab的函数指针调用一个函数。该函数具有签名:

const char* f(const char*);

建议在调用key之前检查tab()tab()是否为空。