我正在尝试将 tcmalloc 移植到 uclibc。 Tcmalloc 有一个 sbrk 函数的定义,该函数又调用 libc 中的 __sbrk。另一方面,uclibc 没有 __sbrk 函数,但有 sbrk。
关于如何从 tcmalloc sbrk 调用 uclibc sbrk 有什么想法吗?
最佳答案
sbrk是(旧)system call ,但大多数内存分配器都是在 mmap 之上构建的。另请参阅this question
您应该使用系统调用,而不是模拟它。我更喜欢使用 mmap
,而不是 sbrk
进行系统调用(通常是 mmap
)是从 linux kernel 获取更多内存的唯一方法。 .
从应用程序(或库)的角度来看,system call是原子的(它主要是单个机器指令,例如 SYSCALL
、SYSENTER
、int 0x80
等)。
关于c - tcmalloc 的 c - sbrk 中的函数包装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8516512/