Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c++;androidndk使用数组 我有一个大问题,我不习惯C++。我通过JNI将一个数组从java传递到C++,我想在C++内部创建一个长度相同的新数组。以下是代码: #include <string.h> #include <jni.h> extern "C" { JNIEXPORT void JNICALL Java_com_profesionphotostudio_pps_Imageprocessing_process(JNIEnv* env, jobject thiz, jintArray pixelArray, jintArray ddimensions, jint function) { int *pixels = env->GetIntArrayElements( pixelArray, 0); jsize length = env->GetArrayLength(pixelArray); int *d= env->GetIntArrayElements(ddimensions, 0); int i, j, pixel, red, green, blue, h,w; w=d[0]; h =d[1]; int *temppixel= new int[length]; for(i=0; i<=w*h; i++) { temppixel[i]=-1; } delete [] temppixel; env->ReleaseIntArrayElements( pixelArray, pixels, 0); env->ReleaseIntArrayElements(ddimensions, d, 0); }_Android_C++_Arrays_Android Ndk - Fatal编程技术网

c++;androidndk使用数组 我有一个大问题,我不习惯C++。我通过JNI将一个数组从java传递到C++,我想在C++内部创建一个长度相同的新数组。以下是代码: #include <string.h> #include <jni.h> extern "C" { JNIEXPORT void JNICALL Java_com_profesionphotostudio_pps_Imageprocessing_process(JNIEnv* env, jobject thiz, jintArray pixelArray, jintArray ddimensions, jint function) { int *pixels = env->GetIntArrayElements( pixelArray, 0); jsize length = env->GetArrayLength(pixelArray); int *d= env->GetIntArrayElements(ddimensions, 0); int i, j, pixel, red, green, blue, h,w; w=d[0]; h =d[1]; int *temppixel= new int[length]; for(i=0; i<=w*h; i++) { temppixel[i]=-1; } delete [] temppixel; env->ReleaseIntArrayElements( pixelArray, pixels, 0); env->ReleaseIntArrayElements(ddimensions, d, 0); }

c++;androidndk使用数组 我有一个大问题,我不习惯C++。我通过JNI将一个数组从java传递到C++,我想在C++内部创建一个长度相同的新数组。以下是代码: #include <string.h> #include <jni.h> extern "C" { JNIEXPORT void JNICALL Java_com_profesionphotostudio_pps_Imageprocessing_process(JNIEnv* env, jobject thiz, jintArray pixelArray, jintArray ddimensions, jint function) { int *pixels = env->GetIntArrayElements( pixelArray, 0); jsize length = env->GetArrayLength(pixelArray); int *d= env->GetIntArrayElements(ddimensions, 0); int i, j, pixel, red, green, blue, h,w; w=d[0]; h =d[1]; int *temppixel= new int[length]; for(i=0; i<=w*h; i++) { temppixel[i]=-1; } delete [] temppixel; env->ReleaseIntArrayElements( pixelArray, pixels, 0); env->ReleaseIntArrayElements(ddimensions, d, 0); },android,c++,arrays,android-ndk,Android,C++,Arrays,Android Ndk,当我手动设置 length = 100000; 我的代码运行得很好。我也试着设置 length = w*h; 但我收到了同样的致命信号错误 在ddimensions数组中,我保留位图的高度和宽度,pixelArray包含该位图的int值 for(i=0; i<=w*h; i++) 这在C++中是绝对有效的。如果它仍然崩溃,那么问题一定来自其他地方(那么您需要隔离问题)。因为您没有在函数中正确获得数组的长度,所以应该是这样的: jsize length=env->GetArray

当我手动设置

 length = 100000; 
我的代码运行得很好。我也试着设置

length = w*h; 
但我收到了同样的致命信号错误

在ddimensions数组中,我保留位图的高度和宽度,pixelArray包含该位图的int值

for(i=0; i<=w*h; i++)

这在C++中是绝对有效的。如果它仍然崩溃,那么问题一定来自其他地方(那么您需要隔离问题)。

因为您没有在函数中正确获得数组的长度,所以应该是这样的:


jsize length=env->GetArrayLength(env,pixelArray)

如果您记录
length
d[0]
d[1]
的值,它会显示什么?@Madalin您是否尝试更改
(i=0;iSy.但是它显示了我同样的错误,它仍然是用小W和H来尝试的吗?也许如果它们太大,Android就不允许你分配大量的内存。我已经测试过了,在发布这个问题之前,内存不是问题。我已经设置了W=1000;H=6000;而且它运行没有问题。这个C++是绝对正确的。在Java_com_ProfessionPhotostudio_pps_Imageprocessing_process函数中只放入我发布的11行代码,并确认其有效。然后,添加调用env方法的代码,然后用实际需要的代码替换w和h。如果以迭代方式执行此操作,每次更改后再次运行程序,您最终会发现什么是有用的谢谢。我已经知道了错误是什么,谢谢LoMy代码是用C++编写的,这是正确的合成码C,它是JStActhSime=(*Env)-> GETARAYLASENT(Env,PixelStar);
for(i=0; i<=w*h; i++)
for(i=0; i<w*h; i++)
int h = 10;
int w = 15;
int *temppixel = new int[w*h];
for(i=0; i<w*h; i++)
{
    temppixel[i] = -1;
}
delete [] temppixel;