- 論壇徽章:
- 11
|
一段代碼中發(fā)生崩潰, 發(fā)現(xiàn)可能出現(xiàn)了非法內(nèi)存寫入, 最終懷疑到如下代碼段可能導(dǎo)致了非法寫入, 但現(xiàn)象詭異的很
如下, 這樣崩潰
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);
誰能告訴我這是哪里出了問題? |
|