pointers - 获取当前进程堆的起始地址?

标签 pointers malloc heap-memory stack-memory low-level

我正在探索系统的较低级别工作原理,并且想知道malloc如何确定堆的起始地址。堆的偏移量是否恒定,或者是否有某种调用来获取起始地址?栈是否影响堆的起始地址?

最佳答案

sbrk 返回其添加(或删除)的字节的起始地址。在尚未分配堆的新进程中,对 sbrk 的第一次调用应返回堆的“break”部分的起始地址。如果我必须打赌,这就是使用 brk/sbrkmalloc 实现在第一次运行时可能会做的事情。

关于pointers - 获取当前进程堆的起始地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2726833/

相关文章:

c - 从关联指针数组中逐字符读取字符串

c - 在c中交换两个结构

C memset - 优雅地添加一个空终止符

c - malloc'ed 3d array 生成数据访问冲突

go - go map 的内存高效实现?

c - 堆溢出 - 堆的结构

c++ - 什么是 PVOID 数据类型?

c++ - 将共享指针传递给非拥有函数时的最佳做法是什么?

c - Malloc 来构造;分段故障

arrays - 如何在 Rust 1.0 中的堆上分配数组?