我正在研究使用android ndk进行虚拟内存管理,并想知道android ndk中是否存在与VirtualAlloc / Free系列函数等效的内容,如果有,我在哪里可以找到一些文档。
感谢您的时间。
答案 0 :(得分:2)
在Android上,所有内存分配都是“虚拟”的,因为除非真正访问内存,否则内存不会被提交。如果我没记错的话,VirtualAlloc来自Windows CE,其中每个进程的内存被人为限制为32 MB(参见http://denniskrabbe.wordpress.com/2009/10/09/windows-mobile-heaps-from-the-large-memory-area/)。在Android上,限制是32位架构的自然局限(iOS最近进入了64位时代)。 JVM堆大小有一些限制,但它们不适用于本机(NDK)内存(请参阅Maximum native memory that can be allocated to an android app)
在Android中,就像任何Linux一样,malloc是乐观的,这意味着在malloc成功后你可能会遇到内存不足,请参阅Does malloc lazily create the backing pages for an allocation on Linux (and other platforms)?。另一方面,仿生不提供custom memory allocation hooks作为glibc。