Compartir a través de


C6332

advertencia C6332: Parámetro no válido: no se permite pasar cero como el parámetro dwFreeType en <función>.Esto provocará un error en la llamada

Esta advertencia indica que se pasa un parámetro no válido a VirtualFree o VirtualFreeEx.VirtualFree y VirtualFreeEx rechazan un parámetro dwFreeType cuyo valor sea cero.El parámetro dwFreeType puede ser MEM_DECOMMIT o MEM_RELEASE.Sin embargo, los valores MEM_DECOMMIT y MEM_RELEASE no se pueden utilizar juntos en la misma llamada.Además, asegúrese de que no se omite el valor devuelto de la función VirtualFree.

Ejemplo

El código siguiente genera esta advertencia porque se pasa un parámetro no válido a la función VirtualFree:

#include <windows.h>
#define PAGELIMIT 80            

DWORD dwPages = 0;  // count of pages 
DWORD dwPageSize;   // page size 

VOID f( VOID )
{
  LPVOID lpvBase;            // base address of the test memory
  BOOL bSuccess;           
  SYSTEM_INFO sSysInfo;      // system information

  GetSystemInfo( &sSysInfo );  
  dwPageSize = sSysInfo.dwPageSize;

  // Reserve pages in the process's virtual address space
  lpvBase = VirtualAlloc(
                         NULL,                // system selects address
                         PAGELIMIT*dwPageSize, // size of allocation
                         MEM_RESERVE,        
                         PAGE_NOACCESS );     
  if (lpvBase)
  {
    // code to access memory 
  }
  else
  {
    return;
  }

  bSuccess = VirtualFree( lpvBase, 0, 0 ); 
  // code ...
}

Para corregir esta advertencia, modifique la llamada a la función VirtualFree como se muestra en el código siguiente:

#include <windows.h>
#define PAGELIMIT 80            

DWORD dwPages = 0;  // count of pages 
DWORD dwPageSize;   // page size 

VOID f( VOID )
{
  LPVOID lpvBase;            // base address of the test memory
  BOOL bSuccess;           
  SYSTEM_INFO sSysInfo;      // system information

  GetSystemInfo( &sSysInfo );  
  dwPageSize = sSysInfo.dwPageSize;

  // Reserve pages in the process's virtual address space
  lpvBase = VirtualAlloc(
                         NULL,                // system selects address
                         PAGELIMIT*dwPageSize, // size of allocation
                         MEM_RESERVE,        
                         PAGE_NOACCESS );     
  if (lpvBase)
  {
    // code to access memory 
  }
  else
  {
    return;
  }

  bSuccess = VirtualFree( lpvBase, 0, MEM_RELEASE );
  // code ...
} 

Vea también

Referencia

IHostMemoryManager::VirtualAlloc (Método)

IHostMemoryManager::VirtualFree (Método)