C++ erreur C2440

Bonjour, je suis à l'aide de Visual Studio c++ 2010

Je vais avoir un problème avec ce code ( il est pris à partir du langage C code ) :

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;
}

J'ai ces erreurs :

error C2440: 'initialisation' : impossible de convertir de 'void *' to 'MEMBLOCK *' 
error C2440: '=' : impossible de convertir de 'PVOID' à 'unsigned char *' 
error C2440: '=' : impossible de convertir de 'void *' to 'unsigned char *' 

Je suis un peu newbie. Pouvez vous s'il vous plaît fournir un converti de code de ce qui fonctionne réellement avec le c++.

Merci

  • Si vous essayez de compiler du code C, utiliser un compilateur C.
  • malloc retour void* vous avez besoin de convertir explicitement à MEMBLOCK*. Comme ce MEMBLOCK *mb = (MEMBLOCK*)malloc(sizeof(MEMBLOCK)); ou mieux MEMBLOCK *mb = static_cast<MEMBLOCK*>(malloc(sizeof(MEMBLOCK)));
  • MEMBLOCK *mb = (MEMBLOCK*)malloc(sizeof(MEMBLOCK)); ou /TC option
InformationsquelleAutor user3735032 | 2014-08-07