I'm having trouble with the code below with the error on line 5:
error: invalid conversion from
void*
tochar*
I'm using g++ with codeblocks and I tried to compile this file as a cpp file. Does it matter?
#include <openssl/crypto.h>
int main()
{
char *foo = malloc(1);
if (!foo) {
printf("malloc()");
exit(1);
}
OPENSSL_cleanse(foo, 1);
printf("cleaned one byte\n");
OPENSSL_cleanse(foo, 0);
printf("cleaned zero bytes\n");
}
In C++, you need to cast the return of malloc()
char *foo = (char*)malloc(1);
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.
I assume this is the line with malloc. Just cast the result then - char *foo = (char*)...
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With