Если вы используете C # 4.0, есть свойство Environment.SystemPageSize, которое внутренне использует GetSystemInfo.Я никогда не видел его раньше, так как он новый.
http://msdn.microsoft.com/en-us/library/system.environment.systempagesize.aspx
В C вы можете написать что-то вроде этого.
#include <windows.h>
int main(void) {
SYSTEM_INFO si;
GetSystemInfo(&si);
printf("The page size for this system is %u bytes.\n", si.dwPageSize);
return 0;
}
Затем вы можете использовать P /ПРИЗВАТЬ, чтобы вызвать GetSystemInfo.Взгляните на http://www.pinvoke.net/default.aspx/kernel32.getsysteminfo
Я также должен добавить, что выделение массива байтов размера страницы не лучший выбор.
Прежде всего, память C # может быть перемещена, C # используеткомпактный сборщик мусора.Информация о том, где будут размещаться данные, отсутствует.
Во-вторых, массивы в C # могут быть образованы несмежной областью памяти!Массивы хранятся непрерывно в виртуальной памяти, но смежная виртуальная память не является непрерывной физической памятью.
В-третьих, структура данных массива в C # занимает на несколько байтов больше, чем сам контент (он хранит размер массива и другую информацию).Если вы выделите размер страницы в байтах, то использование массива переключит страницу почти всегда!
Я думаю, что эта оптимизация может быть неоптимизацией.
Обычно массивы C # работают очень хорошо безнеобходимость разделять память по размеру страницы.
Если вам действительно нужно точное распределение данных, вам нужно использовать закрепленные массивы или распределение Маршала, но это замедлит сборщик мусора.
Я быскажем, лучше использовать массивы, не слишком задумываясь о размере страницы.