<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          JNI:如何操作數(shù)組

          共 1279字,需瀏覽 3分鐘

           ·

          2022-03-04 00:59

          1. 數(shù)組的分類

          • 數(shù)組分為兩種

          1. 基本數(shù)據(jù)類型的數(shù)組

          2. 對象類型(Object[])的數(shù)組

          • 一個能通用于兩種不同數(shù)據(jù)類型數(shù)組的函數(shù)

          GetArrayLength( jarray array);//獲取長度

          2. 基本數(shù)據(jù)類型數(shù)組

          • 處理基本數(shù)據(jù)類型數(shù)組的時候,也是跟處理字符串類型,有很相似的函數(shù)

          GetArrayElements( Array arr, jboolean* isCopied);

          這類函數(shù)可以把Java基本類型的數(shù)組轉(zhuǎn)換到C/C++的數(shù)組,有兩種處理方式,一是拷貝一份傳回本地代碼,另一個是把指向Java數(shù)組的指針直接傳回到本地代碼。處理完本地的數(shù)組后,通過ReleaseArrayElements來釋放數(shù)組。

          ReleaseArrayElements( Array arr, * array, jint mode );

          用這個函數(shù)可以選擇將如何處理Java跟C++的數(shù)組。是提交、還是撤銷等;內(nèi)存釋放還是不釋放等。

          mode 可以取下面的值:

          1. 0 對Java的數(shù)組進行更新,并釋放 C/C++ 的數(shù)組

          2. JNI_COMMIT 對Java的數(shù)組進行更新,但是不釋放C/C++的數(shù)組

          3. JNI_ABORT ?對Java的數(shù)組不進行更新,釋放C/C++的數(shù)組

          • JDK 1.2 為了增加直接傳回指向 Java 數(shù)組的指針,而增加了以下函數(shù)。但是同樣的,也會有同GetStringCritical的死鎖問題

          GetPrimitiveArrayCritical( jarray arr, jboolan* isCopied);ReleasePrimitiveArrayCritical(jarray arr, void array, jint mode);
          • 在C/C++預(yù)先開辟一塊內(nèi)存,然后把Java基本數(shù)組類型的數(shù)組拷貝到這塊內(nèi)存當中。跟GetStringRegion原理相似

          GetArrayRegion( Array arr, jsize, start, jsize len, * buffer);
          • 把Java基本數(shù)據(jù)類型的數(shù)組中的指定范圍的元素用 C/C++的數(shù)組中的元素來賦值

          SetArrayRegion( Array arr, jsize start, jsize len, const * buffer );
          • 指定一個長度,然后返回相應(yīng)Java基本類型的數(shù)組

          Array NewArray( jsize len );

          3. 對象類型數(shù)組

          Object[]

          JNI 沒有提供直接把Java的對象類型數(shù)組( Object[] )直接轉(zhuǎn)到 C/C++ 的 jobject[] 數(shù)組的函數(shù)。而是直接通過GetObjectArrayElement /SetObjectArrayElement 這樣的函數(shù)來對Java的Object[]數(shù)組進行操作。

          分享&在看

          瀏覽 46
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  熟女阿av一区二区三区 | 青青艹,天天射 | 欧美高潮视频 | 人人操人人爽 | 亚洲综合在线豆花 |