2015-04-16 33 views
0

分配零長度緩衝區通常取決於實現。
我知道malloc(0)返回NULL或可以安全釋放的指針,這完全取決於實現。什麼將java.nio.ByteBuffer.allocateDirect(0)導致內存?

然後,當調用ByteBuffer.allocateDirect(0)時會發生什麼?
(我的意思是,在內存中會發生什麼?)
這個函數會分配像libc malloc()那樣的一小塊內存嗎?

回答

3

是的,作爲ByteBuffer.allocateDirect(int capacity)返回new DirectByteBuffer(capacity)並且其中 「PA」是VM.isDirectMemoryPageAligned()和「PS」是頁大小DirectByteBuffer(int capacity)構造分配大小Math.max(1L, (long)capacity + (pa ? ps : 0));的存儲器中。您可以按照#110 http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/nio/DirectByteBuffer.java#110

因此,ByteBuffer.allocateDirect(0)創建的內存大小至少爲1.

相關問題