为什么我必须从malloc投出结果?

以下代码给出了错误"error: invalid conversion from void* to char* [-fpermissive]"

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main(){
    char *t = malloc(20);
}

但是,投射malloc的结果解决了这个问题。 但我不明白为什么这个问题说不需要投射malloc的结果。


你使用C ++编译器编译这个C程序。 有必要在C ++中投射malloc的结果,而不是在C中。


是否有可能你编译的代码为c ++? 在C ++中,投射是必需的。


在你的情况下,

malloc(20);

将根据需要分配内存,并返回一个可以分配给任何指针的指针,如本文档中所述

正如所指出的那样,你可能正在使用C ++编译器,因为在C中它实际上被认为是投射malloc结果的一个坏习惯。

链接地址: http://www.djcxy.com/p/4867.html

上一篇: Why must I cast the result from malloc?

下一篇: Is the type cast necessary when using malloc in C?