Por el momento, intento crear una aplicación Java que use la funcionalidad CUDA. La conexión entre CUDA y Java funciona bien, pero tengo otro problema y quería preguntar, si mi opinión al respecto es correcta.Pasando punteros entre C y Java a través de JNI
Cuando llamo a una función nativa de Java, le paso algunos datos, las funciones calculan algo y devuelven un resultado. ¿Es posible, dejar que la primera función devuelva una referencia (puntero) a este resultado que puedo pasar a JNI y llamar a otra función que hace cálculos adicionales con el resultado?
Mi idea era reducir la sobrecarga que proviene de copiar datos hacia y desde la GPU al dejar los datos en la memoria de la GPU y simplemente pasarle una referencia para que otras funciones puedan usarla.
Después de intentarlo, pensé que esto no debería ser posible, ya que los punteros se eliminan cuando finaliza la aplicación (en este caso, cuando termina la función C). ¿Es esto correcto? ¿O simplemente estoy mal en C para ver la solución?
Edit: Bueno, para ampliar la pregunta un poco (o para que sea más claro): ¿La memoria asignada por funciones nativas JNI se desasigna cuando la función finaliza? ¿O puedo acceder a él hasta que la aplicación JNI finalice o cuando la libere de forma manual?
Gracias por su entrada :)
también https://stackoverflow.com/q/5802340/632951 – Pacerier