2017-04-14 124 views
1

我試圖創建一個簡單的程序只是爲了好玩,但我發現了一個BufferOverflowException:爲什麼我會得到一個java.nio.BufferOverflowException

ByteBuffer byteBuffer = ByteBuffer.allocateDirect(10); 
FloatBuffer floatBuffer = byteBuffer.asFloatBuffer(); 
floatBuffer.put(new float[] {1, 0, 0}); 

出了什麼問題?

回答

10

當您使用ByteBuffer.allocateDirect(10);時,您要求分配10個字節的內存。然後,您將3 float放入該緩衝區。每個浮動按照official documentation使用4個字節的內存。所以你正在使用12個字節,從而溢出。

爲了解決這個問題,只需用12個字節代替10個。

+0

哦,謝謝,現在它的工作原理<3 – david

相關問題