喜欢malloc over calloc
可能重复:
malloc和calloc之间的区别
有没有什么情况下你更喜欢malloc而不是calloc。 我知道malloc和calloc都会动态分配内存,并且calloc也会将分配的内存中的所有位初始化为零。 从这我会猜测它总是更好地使用calloc over malloc。 或者有些情况下malloc更好? 表现可能是?
如果您需要将动态分配的内存初始化为零,请使用calloc
。
如果你不需要动态分配的内存被初始化,那么使用malloc
。
你并不总是需要零初始化的内存; 如果你不需要内存零初始化,不要支付初始化它的成本。 例如,如果您分配内存然后立即复制数据以填充分配的内存,则没有任何理由执行零初始化。
calloc
和malloc
是完成不同事情的函数:使用哪一个最适合您需要完成的任务。
如果你不小心,依靠calloc的零初始化可能会很危险。 正如预期的那样,清零内存对整数类型给出0,对于字符类型给出0。 但它不一定对应于float / double 0或NULL指针。
通常情况下,您会根据存储某些内容的具体意图来分配内存。 这意味着(至少大部分)由calloc
初始化的空间很快将被其他值覆盖。 因此,大多数代码使用malloc
来实现一些额外的速度,而没有真正的损失。
我见过的唯一一个用于calloc
代码是(据说是)基准测试Java相对于C ++速度的代码。 在C ++版本中,它使用calloc
分配了一些内存,然后使用memset
重新初始化内存(对我来说)是一种相当透明的尝试,以产生有利于Java的结果。
上一篇: preferring malloc over calloc
下一篇: calloc() v. malloc()