Megosztás:


Figyelmeztetés C26408

Kerüljemalloc(), és free()előnyben részesítse new a nothrow (r.10) verziót delete

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ített malloc globális függvényt.std::malloc A 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ített free vagy std::free eredmé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

C++ alapvető irányelvek R.10

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);
}