Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
upozornění C28644: Vrácená hodnota z DPA_InsertPtr není zaškrtnutá
Toto upozornění značí, že může dojít k nevracení paměti.
Většina volání DPA_InsertPtr funkce používá proměnnou, která byla přidělena v haldě. Funkce pak používají DPA a uvolní všechny objekty uložené v DPA. Když DPA_InsertPtr selže, přidělený objekt už nemůže uvolnit kód pro vyčištění DPA, takže volající DPA_InsertPtr potřebuje uvolnit paměť. Všimněte si volání CleanupDPA v následujícím příkladu. Pokud váš kód nevyvolá přidělené objekty podobným způsobem jako CleanupDPA nemusíte nic opravit. Tato chyba předpokládá, že spoléháme na DPA, abychom mohli sledovat všechny objekty, které musíme později uvolnit.
Následující příklad kódu vygeneruje toto upozornění:
void Func()
{
WCHAR*pszBuf=newWCHAR[MAX_PATH];
DPA_InsertPtr(_hdpa, DA_LAST, pszBuf);
}
void CleanupDPA()
{
int count = DPA_GetCount(_hdpa);
for (int i = 0; i < count; i++)
{
delete [] (LPWSTR)DPA_GetPtr(_hdpa, i);
}
}
Následující příklady kódu se vyhýbají tomuto upozornění:
void Func()
{
WCHAR*pszBuf=newWCHAR[MAX_PATH];
if (DPA_ERR == DPA_InsertPtr(_hdpa, DA_LAST, pszBuf))
{
delete [] pszBuf;
}
}
void CleanupDPA()
{
int count = DPA_GetCount(_hdpa);
for (int i = 0; i < count; i++)
{
delete [] (LPWSTR)DPA_GetPtr(_hdpa, i);
}
}