我在谷歌上搜索 malloc 和 calloc 的输入原因。但是,我只发现 malloc 的类型转换,因为它返回void指针,但是, calloc 呢?这与 calloc 的原因相同???
现在,如果我们回到第一点,关于 malloc 和 calloc 的返回值。然后,我发现,都返回分配的空格。所以,我在这里有点困惑。所以,我的问题是
- 的返回值是多少?
malloc 和 calloc
- 醇>
是否需要输入 malloc 和 calloc 。为什么?
答案 0 :(得分:7)
malloc和calloc的返回值是什么?
它是指向void
(void*
)的指针。
是否需要输入malloc和calloc。为什么?
不,因为从指针void
到指向对象的指针的转换是隐式的。
C11(n1570),§6.3.2.3指针
指向void
的指针可以转换为指向任何对象类型的指针。
适用于malloc
和calloc
。
答案 1 :(得分:2)
malloc()
或calloc()
返回void *
,可以将其分配给任何指针类型。在C中,没有必要对void*
进行类型转换,因为它是由编译器隐式完成的。在c ++中,如果不进行类型转换,它会给你错误
答案 2 :(得分:1)
malloc()和calloc()的返回值是什么?
void *malloc(size_t size);
void *calloc(size_t nmemb, size_t size);
void*
由两个函数返回。
是否需要输入malloc和calloc。为什么?
没有。它不需要进行类型转换。 malloc()
和calloc()
函数返回指向已分配内存的指针,该内存适合于任何类型的变量。出错时,这些函数返回NULL
。成功调用大小为零的NULL
,或成功调用malloc()
calloc()
或大小等于零,也可以返回nmemb
。
答案 3 :(得分:1)
malloc
和calloc
的返回值为void*
。这些函数分配的堆内存空间的地址。
两个函数都分配内存。他们之间的唯一区别是
在C中,不建议转换这些函数的返回值。
在C ++中,必须强制转换。