每个用C编写的程序,我见过#include
s <stdlib.h>
,至少是间接的。没有它,你真的不会有用。
为什么它的功能不仅仅是“标准C”的一部分?
为什么#include <stdlib.h>
之前我需要malloc()
?
答案 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以将对象创建到缓冲区中,而不是为它们分配新内存。