На данный момент я пытаюсь создать Java-приложение, которое использует CUDA-функциональность. Связь между CUDA и Java работает нормально, но у меня есть еще одна проблема и я хочу спросить, если мои мысли об этом верны.Передающие указатели между C и Java через JNI
Когда я вызываю функцию native из Java, я передаю ему некоторые данные, функции вычисляют что-то и возвращают результат. Возможно ли, чтобы первая функция вернула ссылку (указатель) на этот результат, который я могу передать JNI и вызвать другую функцию, которая выполняет дальнейшие вычисления с результатом?
Моя идея состояла в том, чтобы уменьшить накладные расходы, связанные с копированием данных на GPU и обратно, оставив данные в памяти GPU и просто передав ссылку на него, чтобы другие функции могли его использовать.
Пробуя некоторое время, я подумал о себе, это не должно быть возможным, поскольку указатели удаляются после завершения приложения (в этом случае, когда C-функция завершается). Это верно? Или я просто плохой на C, чтобы увидеть решение?
Редактировать: Ну, чтобы развернуть вопрос немного (или сделать его более четким): Является ли память выделенной встроенными функциями JNI освобожденной после завершения функции? Или я могу получить доступ к нему до тех пор, пока приложение JNI не закончится или я не освобожу его вручную?
Спасибо за ваш вклад :)
Также https://stackoverflow.com/q/5802340/632951 – Pacerier