gpt4 book ai didi

android - 为什么填充这个数组会出现段错误?

转载 作者:太空宇宙 更新时间:2023-11-04 00:08:49 26 4
gpt4 key购买 nike

我在使用以下代码时遇到了一些问题,这些代码似乎在指示的行中导致了段错误。我正在尝试创建一个 8 位无符号整数数组,以便实例化一个 OpenCV Mat 对象,但是段错误发生在填充数组的循环的中途。

它似乎每次都在不同的迭代中发生,让我怀疑某些东西正在被 GC 释放,但我无法确定是什么。

SignDetector.c

JNIEXPORT void JNICALL Java_org_xxx_detectBlobs(JNIEnv *env, jclass clazz, jintArray in)
{
jint *contents = (*env)->GetIntArrayElements(env, in, NULL);

threshold(contents, PIXEL_SAMPLE_RATE);
detectBlobs(contents);

(*env)->ReleaseIntArrayElements(env, in, contents, 0);
}

BlobDetector.cpp

void detectBlobs(jint *contents)
{
LOGD("Call to detectBlobs in BlobDetector.cpp");

uint8_t *thresholded = (uint8_t*) malloc(frame_size);

int i;
for(i = 0; i < frame_size - 1; i++)
thresholded[i] = (contents[i] == WHITE) ? 0 : 1; // Segfaults partway through this loop.

frame_size 只是图像中的像素数,也相当于图像传递给本地代码的 jintArray 的长度。

有什么建议吗?

最佳答案

通过简单地在 Android 模拟器上重新启动我的 AVD 设法解决了这个问题。问题似乎也没有发生在真实设备上,所以我只能得出结论,虚拟设备的 RAM 中发生了爆炸。

关于android - 为什么填充这个数组会出现段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11716945/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com