解释android NDK上的c ++内存错误

时间:2019-07-03 09:05:48

标签: android c++

我正在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,这绰绰有余。

0 个答案:

没有答案