cpu*_*uer 6 c memory-management brk
int brk(void *end_data_segment);
void *sbrk(intptr_t increment);
Run Code Online (Sandbox Code Playgroud)
以增量0调用sbrk()可用于查找程序中断的当前位置.
什么是程序休息?从哪里开始,0x00?
程序中断是进程数据段的结束。又名...
程序中断是未初始化数据段结束后的第一个位置
至于它从哪里开始,它取决于系统,但可能不是 0x00。
过于简化:
一个进程有几个内存段:
(当然,如今,它变得更加复杂。有一个rodata段,一个未初始化的数据段,通过mmap分配的映射,一个vdso等等)。
程序可以在类似Unix的OS中请求更多内存的一种传统方式是增加数据段的大小,并使用内存分配器(即malloc()实现)来管理结果空间。这是通过brk()系统调用完成的,该系统调用更改了数据段“中断” /结束的点。