我有一个Android应用程序,它有一些JNI方法。 这些方法中的每一种都主要用于java反射,为此我需要一些字符串(java方法/类/等的名称 - 在我的例子中它们不是常量)。 所以我想做一些JNI初始化工作,它将在从java调用这些JNI方法之前准备这些字符串 - 我分配(使用malloc)全局字符串变量(静态char *),无论何时调用它们都将在这些方法中使用。
分配/解除分配此类全局变量的最佳方法是什么? 我可以做常量,但我需要在运行时(初始化期间)修改它们的值
现在我有从Application.onCreate()调用的初始化方法 - 它分配了50个字符串变量(静态char *)并分配它们。 但我从不打电话给free()。
这种方法会有问题吗? 例如,当应用程序被系统杀死时,是否会出现内存泄漏或损坏? 如果我的应用程序再次启动(调用onCreate()并再次重新初始化变量怎么办?) 我自己没有见过这样的问题,但记忆就是这样的事情......也许只是我的运气:)
我想过在JNI_OnLoad中进行初始化,但是再次 - 何时释放资源?