2014-05-19 55 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