我正在分析跨越虛擬頁面的分配效果,同時創建維度爲PageSize x PageSize的2維數組。我的機器的頁面大小是4096.我有一個4096個整數指針(列)的數組,指向4096個整數(行)。如何從C中的新虛擬頁面分配內存?
我想在新的虛擬頁面開始分配第一個整型指針。如何識別當前內存位置是否爲新頁面? 有一次,我發現,我相信我可以寫一些垃圾值並將指針移動到新的虛擬頁面。 這是我如何分配數組。
array = malloc(ncolumns * sizeof(int *));
for(j = 0; j < ncolumns; j++)
{
array[j] = malloc(nrows * sizeof(int));
if(array[j] == NULL)
{ reportError(8);}
}
你說你「分析效果」。你想實現什麼目標? –
@KirillKobelev,我試圖說明,當我有這樣一個數組時,按列訪問數組變量將比訪問每行數組變量要慢。每列訪問完成後,需要觸摸多個頁面,但每行只需要一個頁面。 – user1736947
我也意識到,這種分析需要數組是一個連續的內存塊,所以我沒有將它作爲一個指向整數指針的指針來代替,而是將它作爲一個連續的內存集合使用#define ARR(i,j) (array [COLUMNS * i + j]) – user1736947