gpt4 book ai didi

java-native-interface - 在 Android 中为 JNI 调用 NewObjectArray 时,什么可能导致 SIGSEGV?

转载 作者:行者123 更新时间:2023-12-04 14:52:48 33 4
gpt4 key购买 nike

我刚开始使用 Android NDK,但是当我在我的 C 代码中有这个调用时,我不断收到 SIGSEGV:

jobjectArray someStringArray;
someStringArray = (*env)->NewObjectArray(env, 10,
(*env)->FindClass(env,"java/lang/String"),(*env)->NewStringUTF(env, ""));

基于我能找到的所有示例,上面的代码是正确的,但我不断收到 SIGSERGV,如果 NewObjectArray 行被注释掉,一切都很好。知道什么会导致这样的问题吗?

最佳答案

看起来是对的,所以我猜你做错了什么。我假设您正在运行 checkjni ?您可能希望将其分成多行:执行 FindClass 并检查返回值,执行 NewStringUTF 并检查返回值,然后调用 NewObjectArray。

顺便说一句,您可能希望将 NULL 作为最终参数传递;这种使用空字符串作为数组每个元素的默认值的模式是常用的(我认为它是从某些 Sun 文档中复制并粘贴过来的,并且已经从那里传播了)但它很少有用,而且有点浪费。 (并且它与 Java 中“new String[10]”的行为不匹配。)

关于java-native-interface - 在 Android 中为 JNI 调用 NewObjectArray 时,什么可能导致 SIGSEGV?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2113306/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com