ret-> data = _malloc(ret-> size + 8)

时间:2015-06-28 21:25:00

标签: c++ c visual-studio-2013

我正在尝试使用C ++为Microsoft Visual Studio 2013编译一个为linux编写的程序 (是C和C ++的混合(#include .h),我将用C ++转换所有内容,以免混淆!)

声明:

ret->data = _malloc(ret->size + 8);

返回错误:

  

IntelliSense:“void *”类型的值无法分配给“unsigned char *”类型的实体

请帮助

1 个答案:

答案 0 :(得分:2)

在c ++中,您需要明确地将void *强制转换为目标poitner类型,以便修复代码

ret->data = static_cast<unsigned char *>(_malloc(ret->size + 8));

或,使用new / delete[]

ret->data = new unsigned char[ret->size + 8];

一些说明,

  1. 如果您稍后使用new,则无法使用delete[] / realloc()

  2. 您可能需要将编译器更改为c编译器,因为这显然是c代码,而不是c ++。

  3. 问题可能是文件扩展名,如果您为文件提供.cpp.cxx扩展名,它将被编译为c ++代码,因此将其更改为.c并且它应该可以正常工作