intを返すC++関数呼び出しがエラー/警告なしでアプリケーション全体をクラッシュさせる理由を理解しようとしています。ここでネイティブ関数(C++、jni)からintを返すと、アプリケーションがクラッシュする
コード取り組んでいる:
jint Java_org_ntorrent_DummyTorrentInfoProvider_next(
JNIEnv * env, jobject obj, jint number)
{
jint test = rand();
__android_log_print(ANDROID_LOG_DEBUG, "HelloNDK!", "rand() = %d", test);
return number;
}
をこのコードは警告なしにアプリケーションをクラッシュ:
私は ログ猫で私のログメッセージ(__ android_log_print)を見ることができるアプリケーションがクラッシュする前に
jint Java_org_ntorrent_DummyTorrentInfoProvider_next(
JNIEnv * env, jobject obj, jint number)
{
jint test = rand();
__android_log_print(ANDROID_LOG_DEBUG, "HelloNDK!", "rand() = %d", test);
return number + test;
}
EDIT: "number + test"を "1"に置き換えても、アプリケーションはまだクラッシュする... これは唯一のものですKS私は "数" を返した場合...
EDIT#2:Javaの側コード:
package org.ntorrent;
import java.util.ArrayList;
import java.util.Random;
public class DummyTorrentInfoProvider implements TorrentInfoProvider {
public native Integer next(Integer number);
//public Integer next() { return _random.nextInt(); }
public native void test();
private Random _random = new Random(100);
@Override
public ArrayList getTorrents() {
test();
ArrayList torrents = new ArrayList();
torrents.add(
new TorrentInfo("test torrent number 1", next(1), 3f, 5f));
torrents.add(
new TorrentInfo("test torrent number 2", next(2), 4f, 15f));
torrents.add(
new TorrentInfo("test torrent number 555"));
torrents.add(
new TorrentInfo("test torrent number 3", next(3), 13f, 5f));
return torrents;
}
static {
System.loadLibrary("test");
}
}
スタックスマッシュ、または他の種類のメモリの問題? –
JVMからダンプを取得し、正確に何が起きているのかを調べます。ホットスポットの下には、これらの問題をデバッグするためのオプションがありますが、アンドロイドについては考えられません。ここのコードは問題ありません。問題は他の場所です。 – Voo
迅速な対応をありがとう、みんな!私は明日それを試してみます... – 6opuc