C6332
Warnung C6332: Ungültiger Parameter: Das Übergeben von 0 (null) als dwFreeType-Parameter an <Funktion> ist nicht zulässig. Dies führt zu einem Fehler bei diesem Aufruf.
Diese Warnung gibt an, dass ein ungültiger Parameter an VirtualFree oder VirtualFreeEx übergeben wird. VirtualFree und VirtualFreeEx weisen beide einen dwFreeType-Parameter von 0 (null) zurück. Der dwFreeType-Parameter kann entweder MEM_DECOMMIT oder MEM_RELEASE sein. Der MEM_DECOMMIT-Wert und der MEM_RELEASE-Wert können jedoch nicht zusammen im selben Aufruf verwendet werden. Stellen Sie zudem sicher, dass der Rückgabewert der VirtualFree-Funktion nicht ignoriert wird.
Beispiel
Im folgenden Code wird diese Warnung generiert, da ein ungültiger Parameter an die VirtualFree-Funktion übergeben wird:
#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 ...
}
Um diese Warnung zu korrigieren, ändern Sie den Aufruf der VirtualFree-Funktion, wie im folgenden Code dargestellt:
#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 ...
}