首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用malloc时从“`void*”到“`char*”的转换无效?

使用malloc时从“`void*”到“`char*”的转换无效?
EN

Stack Overflow用户
提问于 2011-02-24 02:20:21
回答 4查看 119.1K关注 0票数 71

下面的代码在第5行的错误中遇到了问题:

错误:void*char*的转换无效

我使用带有代码块的g++,并试图将该文件编译为cpp文件。有关系吗?

代码语言:javascript
复制
#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");
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-02-24 02:21:45

在C++中,您需要转换malloc()的返回

代码语言:javascript
复制
char *foo = (char*)malloc(1);
票数 146
EN

Stack Overflow用户

发布于 2011-02-24 02:24:46

C++设计为比C更安全的类型,因此您不能(自动)从void*转换为另一种指针类型。因为您的文件是.cpp,所以编译器需要使用C++代码,正如前面提到的,对malloc的调用不会编译,因为您将char*分配给void*

如果您将文件更改为.c,那么它将需要C代码。在C中,不需要在void*和另一种指针类型之间指定强制转换。如果您将文件更改为.c,它将成功编译。

票数 28
EN

Stack Overflow用户

发布于 2011-02-24 02:22:59

我想这就是malloc的台词。只是投出结果- char *foo = (char*)...

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5099669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档