C6332C6332

Advertencia C6332: parámetro no válido: pasar cero como el parámetro dwFreeType en <función > no está permitido.warning C6332: Invalid parameter: passing zero as the dwFreeType parameter to <function> is not allowed. Esto provocará un error en la llamadaThis results in the failure of this call

Esta advertencia indica que se pasa un parámetro no válido a VirtualFree o VirtualFreeEx.This warning indicates that an invalid parameter is being passed to VirtualFree or VirtualFreeEx. VirtualFree y VirtualFreeEx rechazan un parámetro dwFreeType cuyo valor sea cero.VirtualFree and VirtualFreeEx both reject a dwFreeType parameter of zero. El parámetro dwFreeType puede ser MEM_DECOMMIT o MEM_RELEASE.The dwFreeType parameter can be either MEM_DECOMMIT or MEM_RELEASE. Sin embargo, los valores MEM_DECOMMIT y MEM_RELEASE no se pueden utilizar juntos en la misma llamada.However, the values MEM_DECOMMIT and MEM_RELEASE may not be used together in the same call. Además, asegúrese de que no se omite el valor devuelto de la función VirtualFree.Also, make sure that the return value of the VirtualFree function is not ignored.

EjemploExample

El código siguiente genera esta advertencia porque se pasa un parámetro no válido a la función VirtualFree:The following code generates this warning because an invalid parameter is passed to the VirtualFree function:

#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:To correct this warning, modify the call to the VirtualFree function as shown in the following code:

#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 ...  
}   

El uso de las opciones VirtualAlloc y VirtualFree tiene muchos riesgos en cuanto a pérdidas de memoria y excepciones.The use of VirtualAlloc and VirtualFree have many pitfalls in terms of memory leaks and exceptions. Para evitar todos estos tipos de problemas de pérdidas de memoria y excepciones, use los mecanismos proporcionados por la Biblioteca de plantillas estándar (STL) de C++.To avoid these kinds of leaks and exception problems altogether, use the mechanisms that are provided by the C++ Standard Template Library (STL). Puede tratarse de shared_ptr, unique_ptr, y vector.These include shared_ptr, unique_ptr, and vector. Para obtener más información, consulte punteros inteligentes y biblioteca estándar de C++.For more information, see Smart Pointers and C++ Standard Library.

Vea tambiénSee Also

VirtualAlloc (método) VirtualAlloc Method
VirtualFree (método)VirtualFree Method