передать указатель на Java с помощью NDK на Android - PullRequest
1 голос
/ 26 июля 2011

Я хочу использовать memset в программе для Android.я пытаюсь NDK кодировать на C, а затем использовать библиотеку в моей программе на JAVA Android.

Ввод memset равен *ptr. Я хочу отправить адрес памяти (например, 0x8134) для программирования, а затем использоватьmemset чтобы изменить его. Как я могу отправить это в мою программу?

1 Ответ

1 голос
/ 24 апреля 2012

Во-первых, как вы знаете, в Java нет понятия указателей, и поэтому он не может реально выделять / использовать область памяти с помощью указателей (для которых необходимо использовать memset).

Тем не менее, можно использовать ByteBuffer.allocateDirect для получения прямого байтового буфера, адрес которого можно использовать на собственной стороне JNI для выполнения прямых операций с памятью. Кроме того, вы можете напрямую выделить память в собственном коде и передать ее обратно в код Java как ByteBuffer. Это самое близкое к доступу к памяти / манипулированию памятью типа C / C ++.

Подробнее:
http://onjava.com/pub/a/onjava/2002/10/02/javanio.html?page=2
http://docs.oracle.com/javase/6/docs/api/java/nio/ByteBuffer.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...