Tag: 分页

如何从C中的新虚拟页面分配内存?

我正在分析在创建维度PageSize x PageSize的二维数组时跨虚拟页面分配的效果。 我的机器的页面大小是4096.我有一个4096个整数指针(列)的数组,指向4096个整数(行)。 我想在新的虚拟页面开始分配第一个整数指针。 如何识别当前内存位置是否为新页面? 有一次,我已经确定了,我相信我可以写一些垃圾值并将指针移动到一个新的虚拟页面。 这就是我分配数组的方式。 array = malloc(ncolumns * sizeof(int *)); for(j = 0; j < ncolumns; j++) { array[j] = malloc(nrows * sizeof(int)); if(array[j] == NULL) { reportError(8);} }

将虚拟地址与紧邻的下一页边界对齐

我遇到了以下算法,它将虚拟地址与紧邻的下一页边界对齐。 VirtualAddr = (VirtualAddr & ~(PageSize-1)); 此外,给定一个字节长度将长度(将其舍入)对齐在页面边界上 len = ((PageSize-1)&len) ? ((len+PageSize) & ~(PageSize-1)):len; 我发现很难破译它是如何工作的。 有人可以帮我分解吗?