Копаясь в источнике JNA для класса Pointer,
Pointer.getPointerArray(long base)
Pointer.getStringArray(long base)
... очевидно, ссылаются на 'base' в контексте адресов адресации памяти base + address , найденных на ассемблере/ аппаратный уровень, где один регистр будет хранить адрес памяти, в то время как второй регистр будет хранить смещение по этому адресу, которое автоматически суммируется во время доступа к памяти.В идеале указатель должен быть «базовым адресом», и, перебирая содержимое памяти, вы будете корректировать адрес «смещения».
Таким образом, в основном «base» означает «смещение» вэтот контекст: он начинается в «базовых» байтах после расположения указателя, а затем выплевывает объекты Pointer / String на основе адресов, которые он читает из этих частей памяти, пока не найдет нулевое значение.Я предполагаю, что причина использования слова «base» связана с внутренним кодированием метода:
Он создает второй объект Pointer на основе самого себя, но передает ваш аргумент «base» в виде «смещения»', а затем создает индексную переменную с именем' смещение '... да.Затем он выполняет итерацию, увеличивая смещение на размер адресного слова в байтах (обычно 8), пока не прочитает нулевое значение.
Так как 'смещение' уже используется в качестве локальной переменной, оно будет конфликтовать с параметром смещения, поэтому кодер назвал параметр смещения метода 'base'.