我提供了一个std::set<int>
对象,我需要将其转换/复制为jintArray
返回 Android 应用程序。我尝试了下面的代码,但它似乎让我的应用程序崩溃,只有这个作为线索:
致命信号 11 (SIGSEGV),代码 1 (SEGV_MAPERR),tid 19975 中的故障地址 0x2
我怀疑这是演员阵容,但我不确定这样做的正确方法。 theId
绝对是一个int
。请看下面的代码:
std::set<int> speciesSet = someFunctionThatReturnsASet();
speciesIDSet = env->NewIntArray(speciesSet.size());
int count = 0;
for ( std::set<int>::iterator itr=speciesSet.begin(); itr != speciesSet.end(); itr++ ) {
try {
int theId = *itr;
// This is the last line of code that runs.
env->SetIntArrayRegion(speciesIDSet, count, 1, (jint*)theId);
count++;
}
catch (const std::exception& e) {
std::cout << e.what();
}
catch (...) {
std::cout << "oops";
}
}