Существует ли портативный способ обнаружить (программно) размер страницы памяти с помощью C или код C++?
Поскольку Boost
- довольно переносимая библиотека, вы можете использовать функцию mapped_region :: get_page_size ()
для получения размера страницы памяти.
Что касается стандарта C ++, он не дает такой возможности.
Это полностью зависит от платформы, какие диапазоны адресов сопоставлены с какими размерами страниц. Кроме того, размер страницы не является общесистемным. Вы можете выделить память из разных областей размера страницы в соответствии с вариантом использования. И у вас могут быть даже платформы без какого-либо управления виртуальной памятью.
Таким образом, код, обрабатывающий эту тему, должен зависеть от платформы.
C ничего не знает о страницах памяти. В системах posix вы можете использовать long pagesize = sysconf (_SC_PAGE_SIZE);