1. ホーム
  2. c++

[解決済み] malloc を使用する場合、`void*' から `char*' への変換は無効ですか?

2022-02-12 23:17:55

質問内容

下記のコードで、5行目でエラーが出て困っています。

error: 無効な変換 void* から char*

私はg++とcodeblocksを使っていますが、このファイルをcppファイルとしてコンパイルしようとしました。これは問題でしょうか?

#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");
}

解決方法は?

C++の場合、(1)の戻り値をキャストする必要があります。 malloc()

char *foo = (char*)malloc(1);