2013-11-01 3 views
0

Я занимаюсь управлением виртуальной памятью с помощью android ndk и задавался вопросом, есть ли эквивалент семейства функций VirtualAlloc/Free в android ndk, и если да, где я могу найти некоторые документы на них.Есть ли эквивалент VirtualAlloc на Android NDK?

Спасибо за ваше время.

ответ

1

В Android все распределения памяти являются «виртуальными» в том смысле, что память не совершена, если она действительно не доступна. Если я правильно помню, VirtualAlloc поступает из Windows CE, где память на один процесс искусственно ограничена 32 мегабайтами (см. 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)?. С другой стороны, bionic не дает custom memory allocation hooks как glibc.

+0

Означает ли это, что я должен использовать malloc/new для обработки памяти? В VirtualAlloc я могу запросить зарезервировать или передать явно, как это сделать в родной среде Android? – JaimeBarrachina

+1

Что вы пытаетесь сделать? (Я чувствую себя немного http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem здесь.) – fadden

+1

Нет, в Android (ни в бионике, ни в ядре Linux) можно не запрашивать резервирование или передачу явно. –

Смежные вопросы