Android NDK C 库导致段错误

标签 android c segmentation-fault 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;
}

最佳答案

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

const char* f(const char*);

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

关于Android NDK C 库导致段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11290759/

相关文章:

java - 压缩 .jar 文件以简化 Android 应用程序

java - 校验和问题 CRC16CCITT

c - pthread 导致的段错误?

c - musl libc malloc 中的 adjustment_size 有何作用?

ruby - 调试 Ruby 段错误

c - 段错误 11 - 在 C 语言文件中查找单词

java - Gson java.lang.IllegalArgumentException : No time zone indicator

java - Android:发现蓝牙设备时出错

android - 用户定义的 ActionBar Action View : getting the width right

在没有 malloc 的情况下创建内存缓冲区