【问题标题】:Malloc or Calloc and when [duplicate]Malloc或Calloc以及何时[重复]
【发布时间】:2012-11-11 05:04:27
【问题描述】:

可能重复:
c difference between malloc and calloc

calloc 和 malloc 的 memset 一样吗?或者有什么区别

字符 *ptr;
ptr=(char *)calloc(1,100)

  or

字符 *ptr;
ptr=(char *) malloc(100);
memset(ptr,0,100);

【问题讨论】:

  • 如果您有 *nix 平台,请在终端中输入 man calloc
  • 另外,不要转换malloc()(等)的返回值。
  • @asbumste:无论如何你都不应该在 C++ 中使用malloc
  • @asbumste 一个问题应该同时标记 C 和 C++,因为它们是完全不同的语言。 “C 和 C++”不是一种语言。

标签: c++ c


【解决方案1】:

这就是gcc定义calloc的方式:

PTR
calloc (size_t nelem, size_t elsize)
{
  register PTR ptr;

  if (nelem == 0 || elsize == 0)
    nelem = elsize = 1;

  ptr = malloc (nelem * elsize);

  if (ptr) bzero (ptr, nelem * elsize);

  return ptr;
}

http://gcc.gnu.org/viewcvs/trunk/libiberty/calloc.c?view=markup

void
bzero (void *to, size_t count)
{
  memset (to, 0, count);
}

【讨论】:

    【解决方案2】:

    结果是一样的。

    两者都在分配内存,然后设置为0

    【讨论】:

    • 我说作为结果他给出的例子
    • 不,你说的是“结果”。 :P
    • @netcoder 你能详细说明一下吗?我看不出你想表达什么。
    • @DanielFischer:我可以,但我不会,因为这个问题已经结束并且没用。
    • @DanielFischer 还有很多其他的例子,结果会有所不同。这个 sizeof() 不是 1 的任何东西。
    猜你喜欢
    • 2011-07-03
    • 2018-06-12
    • 2022-06-16
    • 2011-05-13
    • 2012-10-08
    • 2012-03-02
    • 2011-05-05
    • 2011-02-06
    • 1970-01-01
    相关资源
    最近更新 更多