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