malloc和malloc(3)有什么区别?

5
阅读jemalloc内存管理器的黑客文章时,黑客一直在提到malloc(3),而不是malloc。我想知道为什么。
他这样做是因为它指的是特定的Linux malloc实现吗?还是仅仅是指实现了Unix/Linux手册页面第3节(库函数)中描述的接口的所有malloc变体?我猜测是后者,但想确认一下。是否有其他原因?
那么,这个黑客是过于具体了吗?还是malloc和malloc(3)之间有区别?
(3)部分不是对黑客文章中稍后提到的其他文档、文章或研究的引用。

有些人总是这样写(2),因为这样可以更清楚地表达他们想要表达的内容(1)。 - ChrisH
答案解释了3的含义,但我真的很好奇为什么人们这样做。对于对内存管理器感兴趣的人来说,他们知道malloc是什么,而那些不知道malloc是什么的人可能不会理解3的含义。 - undefined
3个回答

10

malloc(3)只是提示malloc是手册第三节的一部分。第三节是库函数所在的地方,相对于第二节手册中系统调用所在的位置。没有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]

3
前言:我对unix的了解较少。
我认为这只是指向第三部分库的参考。
(来自黑话词典)
例如malloc(3)和patch(1)等引用是指Unix设施(其中一些,如patch(1),实际上是通过Usenet分发的开源软件)。

1

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

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

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


我相信他指的是malloc的POSIX定义。这不仅仅适用于Linux。 - user1518997

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接