4

在阅读有关 jemalloc 内存管理器的黑客文章时,黑客一直提到 malloc(3),而不是 malloc。我想知道为什么。

他这样做是因为它指的是特定的 linux malloc 实现吗?或者简单地引用所有 malloc 变体,它们实现了unix/linux 手册页第 3 节(库函数)中描述的接口?这个选项是我的猜测,想确定。有不同的原因吗?

那么,黑客是否过于具体了?或者 malloc 和 malloc(3) 之间有区别吗?

(3) 部分不是对黑客文章后面提到的其他文档、文章或研究的引用。

4

3 回答 3

9

malloc(3)只是一个提示,它malloc是手册页第 3 节的一部分。第 3 节是库函数的位置。这与系统调用所在的手册页的第 2 节相反。没有malloc(2)

例如:

fwrite是一个库函数,所以有时写成fwrite(3)

write是一个系统调用,所以有时写成write(2)

如果你运行命令:

$ man man

它会告诉你

   1   Executable programs or shell commands
   2   System calls (functions provided by the kernel)
   3   Library calls (functions within program libraries)
   4   Special files (usually found in /dev)
   5   File formats and conventions eg /etc/passwd
   6   Games
   7   Miscellaneous  (including  macro  packages and convenâ
       tions), e.g. man(7), groff(7)
   8   System administration commands (usually only for root)
   9   Kernel routines [Non standard]
于 2012-07-11T20:24:22.753 回答
3

前言:我的unix很弱。

我相信它只是对第 3 节库的引用。

(来自行话文件)
诸如 malloc(3) 和 patch(1) 之类的引用是对 Unix 工具的引用(其中一些,例如 patch(1),实际上是通过 Usenet 分发的开源)。

于 2012-07-11T20:26:08.497 回答
1

看起来作者只是非常具体。

如果可能存在相同功能的例如 shell 版本,则指定对手册页第 3 节的引用通常很有用。例如,man 1 printf对于 printf(1) 与 printf(3)。

但在malloc文档的情况下,应该只存在于第 3 节中。

于 2012-07-11T20:24:39.210 回答