Freigeben über


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

Siehe auch

Referenz

IHostMemoryManager::VirtualAlloc-Methode

IHostMemoryManager::VirtualFree-Methode