Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Kerülje
malloc(), ésfree()előnyben részesítsenewanothrow(r.10) verziótdelete
Ez a figyelmeztető jelző az malloc R.10: Kerülje malloc és freefree. Az ilyen figyelmeztetések egyik lehetséges javítása az std::make_unique használata az objektumok explicit létrehozásának és megsemmisítésének elkerülése érdekében. Ha egy ilyen javítás nem elfogadható, az új operátort és a törlést kell előnyben részesíteni. Bizonyos esetekben, ha a kivételek nem szívesen, malloc és free lehet cserélni a nothrow verziójú operátorok new és delete.
Megjegyzések
Az észlelés
malloc()érdekében ellenőrizzük, hogy egy hívás meghív-e egy nevesítettmallocglobális függvényt.std::mallocA függvénynek egy mutatót kell visszaadnia,voidés el kell fogadnia egy nem aláírt integrál típusú paramétert.Az észleléshez
free()ellenőrizzük a nevesítettfreevagystd::freeeredmény nélküli globális függvényeket, és elfogadunk egy paramétert, amely egy mutató.void
Kódelemzés neve: NO_MALLOC_FREE.
Lásd még
példa
#include <new>
struct myStruct {};
void function_malloc_free() {
myStruct* ms = static_cast<myStruct*>(malloc(sizeof(myStruct))); // C26408
free(ms); // C26408
}
void function_nothrow_new_delete() {
myStruct* ms = new(std::nothrow) myStruct;
operator delete (ms, std::nothrow);
}