1.malloc是如何分配内存的?
根据分配内存大小的不同分配内存的方式也不同。
(1)如果用户分配的内存小于128KB,则通过brk()(将堆顶指针向高地址移动,获得新的内存空间)申请内存。
(2)如果用户分配的内存大于128KB,则通过mmap()(从文件映射区偷一块内存)申请内存。
2.malloc分配的是物理内存吗?
不是,分配的是虚拟内存,只有当该内存被访问的时候才会尝试去分配物理内存。
3.malloc(1)到底会分配多大的虚拟内存?
malloc()在分配内存的时候,并不是老老实实按用户预期申请的字节数来分配内存空间大小,而是会按预期更大的空间作为内存池,且内存池的大小与malloc使用的内存管理器有关系。