java - 安卓NDK : what happens to memory allocated with malloc when app finishes?

标签 java c android-ndk malloc

我有一些用 C 编写的例程,这些例程是从带有 NDK 的 Java 类内部调用的

在这些例程中,我只是在开始时使用 mallocs 来设置一些内部数组,这些数组稍后会在调用 C 例程时使用。这些数组在 C 部分全局定义,但在 Java 端没有链接或引用

我的问题是,当我的应用程序关闭时,我是否需要费心释放这个内存,或者系统会自动释放它?我的意思是,系统是否以某种方式意识到这些分配是从一个正在被销毁的类中进行的,因此也会自动清除它,或者情况并非如此?

最佳答案

为了扩展 Peter 的回答,您的程序以大块的形式从操作系统请求内存。然后您的程序使用这些 block 为特定数据结构分配少量。操作系统对这些数据结构没有任何理解:类实例、数组或其他任何东西。

当您的程序终止时,操作系统简单地声明它提供给您的程序的所有大块为“空闲”,以分配给任何其他请求更多内存的程序。您的程序知道的任何结构都变成了包含无意义数字的简单字节。

关于java - 安卓NDK : what happens to memory allocated with malloc when app finishes?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24677787/

相关文章:

java - 时区与 getRawOffset 方法混淆

c - C 代码与机器/编译器相关的段错误

android - 在使用 CMake (CMakeLists.txt) 而不是 ndk-build (Android.mk) 的 android ndk 项目中包含 GStreamer

android - 将图像转换为无符号字符*

java - 在 Java 整数上,Character.IsDigit 返回 false 而不是 true

java - Java 中 Windows 的行分隔符

c - 使用 Thrust 时在 CUDA 中启动计时内核

c - fork () : Number of child processes created

android - 如何从 JNI/NDK C++ 代码访问/res/raw?

java - java中的URL路径匹配器(Spring)