C++ 将指针投射到长

C++ 将指针投射到长,c++,java-native-interface,long-integer,C++,Java Native Interface,Long Integer,我正在使用JNI(使用本机代码为Android开发) 这种情况下,我想向Java类发送一个指向本机对象的指针。为此,我在将指针方向转换为长箭头时看到,如下所示: long pointerDirection = (long)pointer; 这安全吗?我已经读到在一些架构中,“long”仅为32位,但指针只需要32位,对吗?或者在64位中,它们也使用64位 谢谢 这安全吗 不,绝对不是——标准没有这样的保证(即使在实践中它可能在许多机器上工作) 您可以安全地(仅)将其强制转换为整型ptrdiff

我正在使用JNI(使用本机代码为Android开发)

这种情况下,我想向Java类发送一个指向本机对象的指针。为此,我在将指针方向转换为长箭头时看到,如下所示:

long pointerDirection = (long)pointer;
这安全吗?我已经读到在一些架构中,“long”仅为32位,但指针只需要32位,对吗?或者在64位中,它们也使用64位

谢谢

这安全吗

不,绝对不是——标准没有这样的保证(即使在实践中它可能在许多机器上工作)


您可以安全地(仅)将其强制转换为整型
ptrdiff\u t

如果您担心类型的宽度可能会改变,为什么不选择一个固定宽度的类型,如
uint64\u t
,如果您想要本机指针类型,只需选择
intptr\u t
。那么
ptrdiff\u t
将如何传递给Java?。如果他想将指针传递到Java,他可以
重新解释\u cast
jlong