第一个“C”在“calloc”中代表什么?
一个学生问这个问题,我不知道。
猜测包括:“计数”,“清除”,“分块”,“完整”,…
标准库文档没有说明它的含义,也没有类似的命名函数来指示模式。 有谁知道实际的词源,也许有一个权威的参考来支持它?
 根据“ Linux系统编程” (罗伯特·洛夫)一书的摘录, calloc的词源中没有官方消息来源。 
一些似是而非的候选人似乎是:
-   计数或计数 ,因为calloc需要一个单独的计数参数。
- 
清除 ,因为它确保返回的内存块已被清除。 - 据报道,Brian Kernighan认为“c”代表明确 (尽pipe他承认他不确定)。
-   (请参阅注释。)早期的calloc.c似乎在源代码注释中明确提及“ 清除 ”一词(但没有提及单词计数或任何其他候选)。 在文件malloc.c中的另一个源代码注释中, clear一词又出现在calloc这个词的引用中。
 
- 
C ,就像C语言一样。 - (请参阅alk的回答和评论。)可能是大约在同一时间推出的一组函数的命名约定。
 
我做了一些研究,在“UNIX @ TIME-SHARING SYSTEM:UNIX程序员手册第七版,第二卷”中的“PROGRAMMING”一章 ( 斜体 )中find了以下内容:
char *malloc(num);分配
num字节。 返回的指针足够好,可以用于任何目的。 如果没有空间可用,则返回NULL。char *calloc(num, size);为每个
size大小的num项目分配空间。 该空间保证被设置为0,并且该指针被充分alignment以用于任何目的。 如果没有空间可用,则返回NULL。cfree(ptr) char *ptr;空间返回到由
calloc使用的池。 如果指针不是从calloc获得的话,可能会出现障碍 。
- 
最后一句话是一个明确的证据, calloc()肯定(意味着?)与malloc()更加不同 ,然后清除内存。有趣的是,没有任何提及 free()在这些几百页… 🙂
- 
而且UNIX V6已经有调用 alloc()calloc()alloc()。 (链接)源不显示任何方法来零任何内存。
 从上述两个事实得出结论,我强烈反对calloc()中的主要“c”代表“明确”的理论。 
我不认为有人知道。 但是使用内存必须清除的语义来描述calloc()调用,而不是返回从前一个free()操作中遗留的随机垃圾的malloc(内存分配),这对于学生来说是一个有用的工作方法 ,这是有用的,它提醒用户malloc()返回一个不安全的值。
  calloc =连续内存分配。 
 这意味着根据calloc()语法即 
 void *calloc (size_t number_of_blocks, size_t size_of_each_block_in_bytes); 
它接收两个参数:不。 块和一个块的大小,所以它为no分配一个内存数组。 你会提供的块。