Правильный способ взаимодействия с массивами с помощью SWIG

немного потерян с наборами в Swig и как использовать массивы. Я подготовил рабочий пример, который использует массивы между Java и C, используя Swig, но я нене знаю, если это правильный способ сделать это.

В основном я хочу передать байтовый массивbyte[] из Явы в C как ´подписанный символ * `+ это 's размер, измените его в c и посмотрите изменения в java, создайте массив в c и используйте его в Java.

Я взглянул на эти вопросы:Как передать массив (массив long в Java) из Java в C ++, используя Swig,Передать массив в упакованную функцию как указатель + размер или диапазон,Как я могу заставить Swig правильно обернуть буфер char *, модифицированный в C как Java-то или другое?

И на самом деле использовали решения в качестве руководства, чтобы сделать пример.

Это мой код в файле arrays.h:

#include 

bool createArray(signed char ** arrCA, int * lCA){
    *lCA = 10;
    *arrCA = (signed char*) calloc(*lCA, sizeof(signed char));

    for(int i = 0; i < *lCA; i++){
        (*arrCA)[i] = i;
    }

    return *arrCA != NULL;
}

bool readArray(const signed char arrRA[], const int lRA){
    for(int i = 0; i < lRA; i++){
        std::cout < ((unsigned int) arrRA[i]) < " ";
    }
    std::cout < std::endl;
    return true;
}

bool modifyArrayValues(signed char arrMA[], const int lMA){
    for(int i = 0; i < lMA; i++){
        arrMA[i] = arrMA[i] * 2;
    }
    return true;
}


bool modifyArrayLength(signed char arrMALIn[], int lMALIn, signed char ** arrMALOut, int * lMALOut){

    *lMALOut = 5;
    *arrMALOut = (signed char*) calloc(*lMALOut, sizeof(signed char));

    for(int i = 0; i < *lMALOut; i++){
        (*arrMALOut)[i] = arrMALIn[i];
    }
    return true;
}

Ответы на вопрос(2)

Ваш ответ на вопрос