brk和sbrk主要的工作是实现虚拟内存到内存的映射.
在GNU C中,内存分配是这样的:
每个进程可访问的虚拟内存空间为3G,但在程序编译时,不可能也没必要为程序分配这么大的空间,只分配并不大的数据段空间,程序中动态分配的空间就是从这一块分配的。如果这块空间不够,malloc函数族(realloc,calloc等)就调用sbrk函数将数据段的下界移动,sbrk函数在内核的管理下将虚拟地址空间映射到内存,供malloc函数使用。
sbrk 用来改变 "program break" (程序间断点)的位置,这个位置可参考下图:

本文介绍了GNU C编译器中brk和sbrk函数的作用,它们主要用于实现虚拟内存到实际物理内存的映射。在内存分配过程中,通过sbrk函数调整数据段的大小来动态分配内存。
1421

被折叠的 条评论
为什么被折叠?



