3

Android NDK で使用するライブラリの C コードに問題があります。

エミュレータでは動作しますが、実際のデバイスでは動作しません。それは私に「libc - Fatal signal 11」(SIGSEGV)を与えます

問題をライブラリ内のコードに突き止めましたが、2 行目が何をしているのか理解できません。

コードは次のとおりです。

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;
}
4

1 に答える 1

2

2行目は、という名前の関数ポインターを介して関数を呼び出していますtab。関数には次のシグネチャがあります。

const char* f(const char*);

を呼び出す前に、がNULLでないことを確認することkeyをお勧めします。tab()tab()

于 2012-07-02T09:14:08.033 に答える