2014-05-19 59 views
2

我正在使用JNI(使用本机代码为Android开发)。将指针长度加长

这种情况是我想发送给Java类的一个指向Native对象的指针。为此,我已经看到在将指针方向投入一长段,如下所示:

long pointerDirection = (long)pointer; 

这种安全吗?我读过一些体系结构,“长”只有32位,但指针只需要32位,对吧?或者在64位他们也使用64位?

感谢

+0

如果您担心类型的宽度可能会发生变化,为什么不选择固定宽度类型,比如'uint64_t',并且如果您希望本机指针类型只用于'intptr_t'。 – luk32

回答

2

这是安全的?

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

您可以将其安全地(仅)转换为整数类型ptrdiff_t

+0

然后'ptrdiff_t'怎么会传给Java ?.如果他想传递指向Java的指针,他可以'reinterpret_cast'到'jlong​​' – msam