C++ 将指针投射到长
我正在使用JNI(使用本机代码为Android开发) 这种情况下,我想向Java类发送一个指向本机对象的指针。为此,我在将指针方向转换为长箭头时看到,如下所示: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
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