Android NDK:当应用程序完成时,使用malloc分配的内存会发生什么?

时间:2014-07-10 13:26:16

标签: java c android-ndk malloc

我在C中编写了一些用NDK

从Java类中调用的例程

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

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

2 个答案:

答案 0 :(得分:2)

为了扩展彼得的答案,你的程序会在很大的块中从操作系统请求内存。然后,程序将使用这些块为特定数据结构分配少量数据。操作系统对这些数据结构没有任何了解:类实例,数组或其他任何内容。

当你的程序终止时,操作系统只会声明它为你的程序提供的所有大块,并且#34; free",被发送给任何其他请求更多内存的程序。程序知道的任何结构都只是包含无数数字的字节。

答案 1 :(得分:1)

系统不知道班级做了什么,也不需要。关闭程序时,系统会清除 program 正在使用的所有资源。这些资源是如何分配的,但不需要知道什么类等。