brk是什么意思

brk是什么意思,第1张

brk的意思是:标C库函数中的函数。

标C库函数中的函数,函数名:brk功 能:改变数据段空间分配用法:int brk(void *endds);头文件:#include<alloc.h>程序例:#include <stdio.h>#include <alloc.h>int main(void){char *ptr;printf("Changing allocation with brk()\n");ptr = malloc(1);printf("Before brk() call:%lu bytes free\n",coreleft());brk(ptr+1000)。

printf(" After brk() call:%lu bytes free\n", coreleft());return 0}。

ARM体系结构 V5 新增的指令BRK,软件断点指令;CLZ,计数前导零指令,也是在V5中新增的。注意:是大写的。

定义:

函数(function)在数学中是两不为空集的集合间的一种对应关系:输入值集合中的每项元素皆能对应唯一一项输出值集合中的元素。其定义通常分为传统定义和近代定义,前者从运动变化的观点出发,而后者从集合、映射的观点出发。函数概念含有三个要素:定义域A、值域C和对应法则f。

看下brk的man, 其解释是brk会设置1个"程序中断点"。这个点或者说地址的含义是,(i.e., the program break is the first location after the end of the uninitialized data segment),字面翻译是 未初始化的数据段结束后的第一个位置。从我的理解是,C库会向系统申请1个小数据堆,而brk的地址,代表了第1次申请后的堆的大小,这个可以用程序开始后即可调用sbrk(0)获得。而如果在程序中手动调用brk设置后,那么该点就会被移动,这时c库会和mmap协商,看需要退回/获得多少个分页(这里应该是按页计算的,而不是按字节),如果你定义的brk地址不是在页面边界,那么多出来的页是不会被退回的。而分配内存时,malloc会根据size来决定分配策略,是直接向系统申请,还是从自己的默认堆中分配,而且会优先分配 free回来的size相同的地址所以你代码中获得堆起始地址的做法是错误的,获得当前堆大小也是错误的。。。。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/361627.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-10
下一篇2023-05-10

发表评论

登录后才能评论

评论列表(0条)

    保存