我正在android平台上使用本机代码编写测试,其中我使用40Mb +的数据来测试本机内存使用情况。 C ++代码和JNI很简单:
extern "C" JNIEXPORT jstring JNICALL Java_com_example_ndktest_MainActivity_test(JNIEnv *env, jobject thisObj) {
int size = 10000000; //10MB
int array[size];
// filling up an array to test memory limits
for(int i = 0; i < size; i++){
array[i] = i;
}
string asize = to_string(sizeof(array));
return env->NewStringUTF(asize.c_str());
}
size
小于10MB时,程序运行正常,但是当我增加内存时,会出现此错误消息
2019-07-03 10:55:19.022 7136-7136 / com.example.ndktest A / libc:致命的 信号11(SIGSEGV),代码1(SEGV_MAPERR),故障加法器0xfd29aeb0 in tid 7136(m.example.ndktest),pid 7136(m.example.ndktest)
如何解释这些错误消息?我正在使用的设备具有4Gb的RAM,这绰绰有余。