在getpagesize()
手册页中,写了“函数getpagesize()返回内存页面中的字节数,其中”page“是一个固定长度的块,用于内存分配的单位”
是否意味着如果我们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只在内存中分配一个预防性的大位置?
答案 0 :(得分:1)
不,malloc
的分配单位是字节。页面大小用于需要页面对齐内存或处理页面单位的内存函数。 mmap
是一个这样的记忆功能,对其某些用途有“页面”要求。
答案 1 :(得分:1)
操作系统以页面形式提供进程内存。
malloc
根据需要对页面进行分割,以便为您提供较小的分配。
答案 2 :(得分:1)
页面是操作系统为进程分配内存时使用的最小单位。
在C中,最小单位的大小为1 char
(至少包含8位)。
malloc
的单位为sizeof(char)
,通常称为1个字节。
所以malloc(10)
分配10个字节,而不是10个页面。
答案 3 :(得分:0)
在现代操作系统中,如windows或linux,......
内存管理器使用页面单元来分配处理或数据块的字节块或....
但在malloc中它只是你的字节
和pagesize只用于os内存管理
您也可以阅读此页面了解更多详情
答案 4 :(得分:0)
不,malloc(10)
仅分配10个字节。
函数getpagesize()
返回系统内存页面的大小,在大多数情况下为4096.
答案 5 :(得分:0)
除非页面大小为1字节,否则答案是否定的。
malloc(10)
分配10个字节的内存,一个页面更可能比这个更多。
阅读http://en.wikipedia.org/wiki/Page_%28computer_memory%29以获得有关页面实际内容的更准确描述。
但是对于一个简短的回答,答案很可能是否定的。 祝你好运!