是否有必要对malloc和calloc进行类型转换

可能重复:
我是否施放了malloc的结果?

我在Google上搜索找出malloccalloc的类型转换的原因。 但是,我只发现malloc的类型转换是没有必要的,因为它返回void指针但是, calloc怎么样。 这也是calloc的原因???

现在,如果我们回到第一点,关于malloccalloc的返回值。 然后,我发现两者都返回分配的空格 。 所以,我在这里有点困惑。 所以,我的问题是

  1. malloccalloc的返回值是多少?

  2. 是否有必要输入malloccalloc 。 为什么?

malloc和calloc的返回值是多少?

它是一个指向voidvoid* )的指针。

是否有必要输入malloc和calloc。 为什么?

不,因为从指针到void到指向对象的指针的转换是隐式的。

C11(n1570),§6.3.2.3指针
指向void的指针可以转换为指向任何对象类型的指针。

它适用于malloccalloc

malloc()calloc()返回void * ,它可以分配给任何指针类型。在C中没有必要对void*进行类型转换,因为它是由编译器隐式完成的。但是如果你不进行类型转换,它会给你错误

malloccalloc的返回值是void* 。 这些函数分配的堆内存空间的地址。

两个函数都分配内存。 他们之间的唯一区别是

  • malloc只是分配内存。
  • calloc分配内存并将其初始化为0。

在C中,不建议转换这些函数的返回值。

在C ++中,必须进行强制转换。

malloc()和calloc()的返回值是多少?

 void *malloc(size_t size); void *calloc(size_t nmemb, size_t size); 

void*由两个函数返回。

是否有必要输入malloc和calloc。 为什么?

不。不需要进行类型转换。 malloc()calloc()函数返回一个指向已分配内存的指针,该内存适合于任何类型的变量。 出错时,这些函数返回NULL 。 通过成功调用大小为零的malloc() ,或通过成功调用nmemb或大小等于零的calloc() ,也可以返回NULL