Avertissement C6333
Paramètre non valide : le passage de MEM_RELEASE et d’un paramètre dwSize non nul à « function_name » n’est pas autorisé. Cela entraîne l’échec de cet appel
Notes
Les deux VirtualFree
et VirtualFreeEx
rejettent une dwFreeType
valeur MEM_RELEASE
non nulle de dwSize
. Lorsqu’il MEM_RELEASE
est passé, le dwSize
paramètre doit être égal à zéro.
Nom de l’analyse du code : VIRTUALFREEINVALIDPARAM3
Exemple
L’exemple de code suivant génère cet avertissement :
#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, vérifiez que la valeur de dwSize
0 est 0 dans l’appel à 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, MEM_RELEASE);
// VirtualFree(lpvBase, PAGELIMIT * dwPageSize, MEM_DECOMMIT);
// code...
}
Vous pouvez également utiliser l’appel VirtualFree(lpvBase, PAGELIMIT * dwPageSize, MEM_DECOMMIT);
aux pages decommit, puis les libérer ultérieurement à l’aide d’un MEM_RELEASE
indicateur.
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour