2

Android ndk を使用した仮想メモリ管理を調べていますが、Android ndk に VirtualAlloc/Free 関数ファミリーに相当するものがあるかどうか疑問に思っていました。

お時間をいただきありがとうございます。

4

1 に答える 1

2

Android では、メモリが実際にアクセスされない限りコミットされないという意味で、すべてのメモリ割り当ては「仮想」です。私の記憶が正しければ、VirtualAlloc は Windows CE に由来し、プロセスあたりのメモリは人為的に 32 MB に制限されていました ( http://denniskrabbe.wordpress.com/2009/10/09/windows-mobile-heaps-from-the-を参照)。大メモリ領域/ )。Android では、制限は 32 ビット アーキテクチャの自然な制限です (iOS は最近 64 ビット時代に入りました)。JVM ヒープ サイズにはいくつかの制限がありますが、ネイティブ (NDK) メモリには適用されません ( Android アプリに割り当てることができる最大ネイティブ メモリを参照してください) 。

Android では、他の Linux と同様に、malloc は楽観的です。つまり、malloc が成功した後にメモリ不足が発生する可能性があります. 一方、bionic はカスタム メモリ割り当てフックを glibc として提供しません。

于 2013-11-01T12:53:39.137 に答える