Javadoc中已经非常清楚了。对于putAddress(),它说:“在目标地址实际写入的字节数可以通过查阅#addressSize来确定。”而putLong()则将长整型值的所有位都放置。换句话说:一个地址可能会消耗长整型值的所有位,但不一定要这样做!然后向内存中的某个位置写入64位很可能不是一个好主意!因此,您需要能够区分这两种用例(写入n位的64位和精确写入64位)。但具体来说,在地址大小的javadoc中说:“报告本机指针的字节大小...此值将为4或8。”所以我想,出于所有实际目的,这两种方法是相同的。因为现在几乎所有JVM都A)实现了这些方法,并且B)是64位JVM。(因此,我认为32位JVM将返回4而不是8)。
putAddress()
进行了测试,发现addressSize()
方法总是返回 8。那么addressSize()
方法什么时候会返回 4 呢? - kinglaoaddressSize()
,实现始终返回sizeof(void*)
。 - kinglaoputLong
,它总是在给定地址写入一个long
值。对于putAddress
,如果C++编译器中的指针占用4个字节,那么即使x
是一个long
参数,它实际上也会占用4个字节。 - kinglao