Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android NDK:当应用程序完成时,malloc分配的内存会发生什么变化?_Java_C_Android Ndk_Malloc - Fatal编程技术网

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

Java Android NDK:当应用程序完成时,malloc分配的内存会发生什么变化?,java,c,android-ndk,malloc,Java,C,Android Ndk,Malloc,我有一些用C编写的例程,它们是用NDK从Java类内部调用的 在这些例程中,我刚开始使用mallocs来设置一些内部数组,这些数组稍后在调用C例程时使用。这些数组在C部分中是全局定义的,但在Java端没有链接或引用 我的问题是,当我的应用程序关闭时,我必须费心释放内存,还是系统会自动释放内存?我的意思是,系统不知何故意识到这些分配是从一个正在被销毁的类中进行的,因此也会自动清除它,还是不是这样?系统不知道一个类做了什么,也不需要知道。当您关闭一个程序时,系统会清理该程序正在使用的所有资源。这些资

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

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


我的问题是,当我的应用程序关闭时,我必须费心释放内存,还是系统会自动释放内存?我的意思是,系统不知何故意识到这些分配是从一个正在被销毁的类中进行的,因此也会自动清除它,还是不是这样?

系统不知道一个类做了什么,也不需要知道。当您关闭一个程序时,系统会清理该程序正在使用的所有资源。这些资源是如何分配的,但它不需要知道什么类等。

系统不知道类做了什么,也不需要知道。当您关闭一个程序时,系统会清理该程序正在使用的所有资源。这些资源是如何分配的,但它不需要知道的是什么类等。

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


当您的程序终止时,操作系统只需将它提供给您的程序的所有大块声明为“免费”,以提供给任何其他请求更多内存的程序。你的程序所知道的任何结构都会变成包含无意义数字的字节。

为了扩展一下Peter的答案,你的程序会从操作系统请求大数据块中的内存。然后,程序使用这些块为特定数据结构分配少量数据。操作系统不了解这些数据结构:类实例、数组或其他任何东西


当您的程序终止时,操作系统只需将它提供给您的程序的所有大块声明为“免费”,以提供给任何其他请求更多内存的程序。程序知道的任何结构都会变成包含无意义数字的字节。

很好的解释。我不确定,因为我认为ndk背后的一切都不应该被完全控制,或者至少不知道它是如何被控制的。在将内存提供给下一个进程之前,“无意义的数字”通常应该被操作系统清除。很好的解释。我不确定,因为我认为ndk背后的一切都不应该被完全控制,或者至少不知道它是如何被控制的。这些“无意义的数字”通常应该在将内存提供给下一个进程之前由操作系统清除。