Java 释放 intbuffer 时崩溃
Java crash when freeing intbuffer
每当我 运行 以下代码 java returns 和 EXCEPTION_ACCESS_VIOLATION 释放 IntBuffer 时:
public int[] size(){
IntBuffer size=BufferUtils.createIntBuffer(2);
long address=MemoryUtil.memAddress(size);
GLFW.nglfwGetWindowSize(this.handle, address, address+Integer.BYTES);
int[] result=new int[]{size.get(0), size.get(1)};
JEmalloc.nje_free(address);
return result;
}
BufferUtils
创建的 ByteBuffer
将在没有更多引用时被垃圾收集器释放。
如果要使用JEmalloc.nje_free()
释放缓冲区,那么分配缓冲区时也需要使用JEmalloc
。
IntBuffer size = JEmalloc.je_malloc(2 * Integer.BYTES).asIntBuffer();
long address = MemoryUtil.memAddress(size);
[...]
JEmalloc.nje_free(address);
每当我 运行 以下代码 java returns 和 EXCEPTION_ACCESS_VIOLATION 释放 IntBuffer 时:
public int[] size(){
IntBuffer size=BufferUtils.createIntBuffer(2);
long address=MemoryUtil.memAddress(size);
GLFW.nglfwGetWindowSize(this.handle, address, address+Integer.BYTES);
int[] result=new int[]{size.get(0), size.get(1)};
JEmalloc.nje_free(address);
return result;
}
BufferUtils
创建的 ByteBuffer
将在没有更多引用时被垃圾收集器释放。
如果要使用JEmalloc.nje_free()
释放缓冲区,那么分配缓冲区时也需要使用JEmalloc
。
IntBuffer size = JEmalloc.je_malloc(2 * Integer.BYTES).asIntBuffer();
long address = MemoryUtil.memAddress(size);
[...]
JEmalloc.nje_free(address);