为什么我得到 java.nio.BufferOverflowException
Why am I getting a java.nio.BufferOverflowException
我只是为了好玩而尝试创建一个简单的程序,但我遇到了 BufferOverflowException:
ByteBuffer byteBuffer = ByteBuffer.allocateDirect(10);
FloatBuffer floatBuffer = byteBuffer.asFloatBuffer();
floatBuffer.put(new float[] {1, 0, 0});
有什么问题吗?
当您使用 ByteBuffer.allocateDirect(10);
时,您要求分配 10 个字节的内存。然后,您将 3 float
放入该缓冲区。根据 official documentation,每个浮点数使用 4 个字节的内存。所以你使用了 12 个字节,因此溢出了。
要解决这个问题,只需使用 12 个字节而不是 10 个字节。
我只是为了好玩而尝试创建一个简单的程序,但我遇到了 BufferOverflowException:
ByteBuffer byteBuffer = ByteBuffer.allocateDirect(10);
FloatBuffer floatBuffer = byteBuffer.asFloatBuffer();
floatBuffer.put(new float[] {1, 0, 0});
有什么问题吗?
当您使用 ByteBuffer.allocateDirect(10);
时,您要求分配 10 个字节的内存。然后,您将 3 float
放入该缓冲区。根据 official documentation,每个浮点数使用 4 个字节的内存。所以你使用了 12 个字节,因此溢出了。
要解决这个问题,只需使用 12 个字节而不是 10 个字节。