2012-06-20 59 views
2

我見過沒有問題,具體回覆這個參數組合:memcpy +指針+ java

Java + memcpy +指針。

我的C/C++背景可能會偏袒我。 在C++中我可以這樣做:

memcpy (Destination, Source, length_data); 

和目的地和來源可以是隻有兩個內存位置。 有沒有辦法在Java中使用原始類型的數組來完成它?

所有

Arrays.copyOf 
Arrays.copyOfRange 

的實現都基本上是做了一半工作。從某種意義上說,您可以指定數據量或給定範圍,但所有這些數據都會返回一個數組,但它們不會修改現有的數組。

在此先感謝。

+0

我不推薦它,但有一個相當於Unsafe.copyMemory(),它可以用來從地址/對象複製到任意長度的字節的地址/對象。 –

+0

謝謝彼得。我指的是數組的副本。 但是,您的評論對於通用的memcpy操作可能非常有用。 – 2dvisio

+0

數組是對象,您可以調用Unsafe.arrayBaseOffset()來獲取第一個值和arrayIndexScale(Class)的偏移量,以查找每個元素的大小。 –

回答

0

Java沒有指針是C/C++做的方式。

There's System.arraycopy();看看javadocs。

0

可以修改使用System.arraycopy()

如果src和dest參數指代相同的陣列對象,則 複製如同部件在位置srcPos通過 srcPos執行現有陣列+長度 - 1首先被複制到長度爲 的臨時陣列,然後將臨時陣列的內容複製到目標 陣列的destPos + length-1的位置destPos中。

鑑於Java中缺乏指針,它當然不是一個完美的類比操作。