2014-02-07 18 views
1

getpagesize()手冊頁,它是寫入的「功能getpagesize的()返回在存儲器頁,其中的字節數‘頁’是一個固定長度的塊,用於存儲器分配單位」。C:使用getpagesize的的()中的malloc()

是否意味着如果我們malloc(10),malloc()分配10 * getpagesize()

而且,如果我做一個簡單的程序,malloc(1)33 * getpagesize()破發點招:

printf("sbrk(0) : %p\n", sbrk(0)); 
char *str1 = malloc(1); 
printf("sbrk(0) : %p\n", sbrk(0)); 

顯示:

sbrk(0) : 0x1248000 
sbrk(0) : 0x1269000 
pagesize : 4096 

這是否意味着的malloc只分配在預防大的地方內存?

在現代操作系統如Windows或Linux

回答

1

不,malloc的分配單位是字節。頁面大小是用於那些希望在頁面單位頁對齊的存儲空間或工作記憶功能。 mmap是有它的一些功能「頁」的要求一個這樣的記憶功能。

0

不,malloc(10)只分配10個字節。

getpagesize()返回你的系統,它在你的情況,是4096

0

除非頁面大小爲1個字節,答案是否定的內存頁的大小的功能。

malloc(10)分配10個字節的內存,頁面更可能比這更多。 爲一個什麼樣的網頁確實是一個更accurate說明讀http://en.wikipedia.org/wiki/Page_%28computer_memory%29

但是對於一個簡短的答案,答案很可能不是。 祝你好運!

1

操作系統給出的網頁你進程的內存。

malloc根據需要劃分頁面,使您的分配更小。

1

Page是操作系統爲進程分配內存時使用的最小單位。

在C中,最小單元的大小爲1 char(其由至少8位構成)。

malloc的單位是sizeof(char),通常被稱爲1個字節。因此malloc(10)分配10個字節,而不是10個頁面。