C6333C6333

avertissement C6333 : paramètre non valide : passage de MEM_RELEASE et un paramètre dwSize non nul à <fonction > n’est pas autorisée.warning C6333: Invalid parameter: passing MEM_RELEASE and a non-zero dwSize parameter to <function> is not allowed. Cela entraîne l’échec de cet appelThis results in the failure of this call

Cet avertissement indique un paramètre non valide est passé à VirtualFree ou VirtualFreeEx.This warning indicates an invalid parameter is being passed to VirtualFree or VirtualFreeEx. Ces deux fonctions rejettent un type dwFreeType de MEM_RELEASE avec une valeur non nulle de dwSize.Both of these functions reject a dwFreeType of MEM_RELEASE with a non-zero value of dwSize. Lors du passage de MEM_RELEASE, le paramètre dwSize doit être zéro.When passing MEM_RELEASE, the dwSize parameter must be zero. En outre, assurez-vous que la valeur de retour de cette fonction n’est pas ignorée.Also, make sure that the return value of this function is not ignored.

ExempleExample

L’exemple de code suivant génère cet avertissement :The following sample code generates this warning:

#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, PAGELIMIT * dwPageSize, MEM_RELEASE);   
  //code...  
}  

Pour corriger cet avertissement, utilisez l’exemple de code suivant :To correct this warning, use the following sample 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 );  

  //  VirtualFree(lpvBase, PAGELIMIT * dwPageSize, MEM_DECOMMIT);   
  // code...  
}  

Vous pouvez également utiliser VirtualFree (lpvBase, PAGELIMIT * dwPageSize, MEM_DECOMMIT) ; appel à dégagement de pages et de les libérer ultérieurement à l’aide d’indicateur MEM_RELEASE.You can also use VirtualFree(lpvBase, PAGELIMIT * dwPageSize, MEM_DECOMMIT); call to decommit pages, and later release them using MEM_RELEASE flag.

Voir aussiSee Also

VirtualAlloc, méthode VirtualAlloc Method
VirtualFree, méthodeVirtualFree Method