invalid conversion from `void*' to `char*' when using malloc?

后端 未结 4 1794
野趣味
野趣味 2020-11-27 15:26

I\'m having trouble with the code below with the error on line 5:

error: invalid conversion from void* to char*

相关标签:
4条回答
  • 2020-11-27 16:01

    C++ is designed to be more type safe than C, therefore you cannot (automatically) convert from void* to another pointer type. Since your file is a .cpp, your compiler is expecting C++ code and, as previously mentioned, your call to malloc will not compile since your are assigning a char* to a void*.

    If you change your file to a .c then it will expect C code. In C, you do not need to specify a cast between void* and another pointer type. If you change your file to a .c it will compile successfully.

    0 讨论(0)
  • 2020-11-27 16:14

    I assume this is the line with malloc. Just cast the result then - char *foo = (char*)...

    0 讨论(0)
  • 2020-11-27 16:16

    In C++, you need to cast the return of malloc()

    char *foo = (char*)malloc(1);
    
    0 讨论(0)
  • 2020-11-27 16:17

    So, what was your intent? Are you trying to write a C program or C++ program?

    If you need a C program, then don't compile it as C++, i.e. either don't give your file ".cpp" extension or explicitly ask the compiler to treat your file as C. In C language you should not cast the result of malloc. I assume that this is what you need since you tagged your question as [C].

    If you need a C++ program that uses malloc, then you have no choice but to explicitly cast the return value of malloc to the proper type.

    0 讨论(0)
提交回复
热议问题