Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在尝试将 tcmalloc 移植到 uclibc。Tcmalloc 定义了 sbrk 函数,该函数又从 libc 调用 __sbrk。另一方面,uclibc 没有__sbrk 功能,但有sbrk。
关于如何从 tcmalloc sbrk 调用 uclibc sbrk 的任何想法?
sbrk是一个(旧的)系统调用,但大多数内存分配器都建立在mmap之上。另请参阅此问题
您应该使用系统调用,而不是模拟它。我更喜欢使用mmap,而不是sbrk
mmap
sbrk
进行系统调用(通常)是从linux 内核mmap获取更多内存的唯一方法。
从应用程序(或库)的角度来看,系统调用是原子的(它主要是单个机器指令,如,SYSCALL等)。SYSENTERint 0x80
SYSCALL
SYSENTER
int 0x80