c中没有堆?

use*_*901 28 c malloc

我刚开始阅读Brian Kernighan和Dennis Ritchie 的C编程语言,我发现了这句话:

该语言没有定义除静态定义之外的任何存储分配工具以及由函数的局部变量提供的堆栈规则; 没有堆或垃圾收集.

那么这是否意味着它是由于malloc()函数,它从堆中返回一些内存地址,C才能访问堆内存?然后必须malloc用其他语言编写,最有可能是汇编或B?

这可能是一个愚蠢的怀疑,但我必须清除它.谢谢.

Ben*_*tto 28

C 语言本身不直接指定堆或它应该如何工作,但确实提供了指针等.

malloc和它的表兄弟是一种叫做C标准库的一部分,是您链接到任何标准执行的C函数,而那些提供了对内存的访问是不是静态或在栈上.在每个平台上,这些功能实际获取和管理内存的方式可能不同.

C是一个长期存在的语言和图书馆,现在看起来它们都是一块.但是当K&R写这本书时,这并不是那么明显,而且这句话澄清了语言本身的语法(与支持库通常提供的内容相比).


Ara*_*raK 6

我认为当作者说他们在谈论"语言"时,他们非常精确.当你谈到C时,你有语言和标准库.在语言本身中,没有动态内存分配工具,但标准库提供了这些功能.