C++ 获取错误 C2440

标签 c++ c visual-c++

您好,我正在使用 Visual Studio c++ 2010

这段代码(取自 C 语言代码)有问题:

MEMBLOCK* create_memblock (HANDLE hProc,  MEMORY_BASIC_INFORMATION *meminfo)
{

    MEMBLOCK *mb = malloc(sizeof(MEMBLOCK));

    if (mb)
    {
        mb->hProc = hProc;
        mb->addr = meminfo->BaseAddress;
        mb->size = meminfo->RegionSize;
        mb->buffer = malloc(meminfo->RegionSize);
        mb->next = NULL;

    }
    return mb;
}

我有这些错误:

error C2440: 'initializing' : cannot convert from 'void *' to 'MEMBLOCK *'          
error C2440: '=' : cannot convert from 'PVOID' to 'unsigned char *'    
error C2440: '=' : cannot convert from 'void *' to 'unsigned char *'

我有点新手。您能否为此提供一个实际适用于 C++ 的转换代码。

谢谢

最佳答案

由于您使用 C++ 进行编程,因此不应使用旧的 C 函数 malloc。相反,我建议您使用 C++ new 构造:

MEMBLOCK *mb = new MEMBLOCK;

关于C++ 获取错误 C2440,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25186563/

相关文章:

c++ - 如何判断一组坐标是否为正多边形的顶点?

c++ - 对象的动态数组

c - 在 C/Linux 中显示不断更新的图像的简便方法

c - 我如何使用 SIGINT 来打破对 accept() 或 read() 的等待?

C++如何检测空格

c++ - 当std::random_device熵未知时,如何初始化std::mt19937? (VS C++/Windows)

c++ - 有没有办法进一步缩短和概括这个 Makefile

c++ - 这个声明是什么意思? "good C++ programming typically doesn' t 以复杂的方式使用指针。”

c - gprof 中难以理解的名称

c++ - 从 boost::archive::text_oarchive_impl 和 boost::archive::text_iarchive_impl 派生自定义存档类