C的<stdlib.h>背后的理由是什么,而不是默认包含这些函数?</stdlib.h>

时间:2011-10-20 22:08:25

标签: c programming-languages language-design

每个用C编写的程序,我见过#include s <stdlib.h>,至少是间接的。没有它,你真的不会有用。

为什么它的功能不仅仅是“标准C”的一部分?

为什么#include <stdlib.h>之前我需要malloc()

5 个答案:

答案 0 :(得分:8)

C是一种简约语言。没有内置功能。<​​/ p>

答案 1 :(得分:7)

C语言从一开始就被设计用于普通应用程序(在“托管环境”中运行)和OS内核(以及在“独立环境”中运行的其他专用环境)。在后者中,像malloc()这样的普通C库函数可能不可用。

为了允许相同的编译器用于托管和独立环境,库函数不会硬编码到编译器中,而是放入编译器加载的头文件中 - 例如stdlib.h。操作系统内核和其他专业程序不会(也不能)包含这些标准标题。

答案 2 :(得分:2)

并非所有程序都需要致电malloc()。那些需要动态内存分配的人可能更喜欢以不同的方式来做。 C并不试图强迫单一的程序员工作。

答案 3 :(得分:1)

这仍然是一个完全有效的程序,不需要libc,除了与底层操作系统连接外,还可以做很多事情:

int main (void) {
  int x = 2;
  int y = 3;
  return x + y;
}

答案 4 :(得分:0)

我能想到的一个原因是,通过将stdlib函数放入库中,它们存在于自己的命名空间中,从而更容易重载它们。

考虑到重载malloc可能听起来有点疯狂,但它是实现资源缓冲系统的一种方式,可以用来说...在游戏循环中动态创建游戏对象而不触发分配。您可以预先分配缓冲区,然后重载malloc以将对象创建到缓冲区中,而不是为它们分配新内存。