gpt4 book ai didi

java - java.nio.ByteBuffer.allocateDirect(0) 会在内存中产生什么结果?

转载 作者:行者123 更新时间:2023-12-01 22:21:27 25 4
gpt4 key购买 nike

分配零长度缓冲区通常取决于实现。
我知道 malloc(0) 返回 NULL 或可以安全释放的指针,这完全取决于实现。

那么,当调用 ByteBuffer.allocateDirect(0) 时会发生什么?
(我的意思是,内存中会发生什么?)
这个函数会像libc malloc()那样分配一小块内存吗?

最佳答案

是的,因为ByteBuffer.allocateDirect(intcapacity)返回new DirectByteBuffer(capacity)并且DirectByteBuffer(intcapacity)构造函数分配内存大小 Math.max(1L, (long)capacity + (pa ? ps : 0)); 其中“pa”是 VM.isDirectMemoryPageAligned(),“ps”是页面大小。您可以关注#110 http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/nio/DirectByteBuffer.java#110

因此,ByteBuffer.allocateDirect(0)创建的内存大小至少为 1。

关于java - java.nio.ByteBuffer.allocateDirect(0) 会在内存中产生什么结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29669950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com