- 论坛徽章:
- 11
|
一段代码中发生崩溃, 发现可能出现了非法内存写入, 最终怀疑到如下代码段可能导致了非法写入, 但现象诡异的很
如下, 这样崩溃
jint length = (*env)->GetArrayLength(env, pixel);
(*env)->GetByteArrayRegion(env, pixel, 0, length, (jbyte *) mbuf->ptr[1]);
这样也崩溃:
jint length = (*env)->GetArrayLength(env, pixel);
jbyte* buf = (*env)->GetByteArrayElements(env, pixel, NULL);
memcpy(mbuf->ptr[1], buf, length);
(*env)->ReleaseByteArrayElements(env, pixel, buf, 0);
但这样不崩溃
jint length = (*env)->GetArrayLength(env, pixel);
jbyte* buf = (*env)->GetByteArrayElements(env, pixel, NULL);
memset(mbuf->ptr[1], 0, length);
(*env)->ReleaseByteArrayElements(env, pixel, buf, 0);
谁能告诉我这是哪里出了问题? |
|