c - tcmalloc 的 c - sbrk 中的函数包装

标签 c tcmalloc uclibc

我正在尝试将 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是原子的(它主要是单个机器指令,例如 SYSCALLSYSENTERint 0x80 等)。

关于c - tcmalloc 的 c - sbrk 中的函数包装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8516512/

相关文章:

c - 试图在 C 中交换字符串?

c - 使用 CubeMx 通过 USART 传输多个字符串

c++ - 当我使用共享库编译并运行该程序时,为什么 tcmalloc 会失败?

tcmalloc - 如何使用TCMalloc?

c - 在调用 pthread_join 之前到达 pthread_exit()

linux - 如何在安装了 fun_plug 0.5 的 D-Link DNS 325 上编译 NodeJS?

c - 在 C 中将指针作为只读函数传递

c++ - 初始化指向常量数组的指针

c++ - 在共享库中使用 tcmalloc

c - Glibc 和 uClibc 并排在一个系统上