释放Intbuffer时Java崩溃



每当我运行以下代码时,java返回except_access_violation free 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;
}

pastebin

BufferUtils创建的ByteBuffer将被垃圾收集器发行。

如果要使用JEmalloc.nje_free()释放缓冲区,则在分配缓冲区时也需要使用JEmalloc

IntBuffer size = JEmalloc.je_malloc(2 * Integer.BYTES).asIntBuffer();
long address = MemoryUtil.memAddress(size);
[...]
JEmalloc.nje_free(address);

相关内容

最新更新