Oharra
Orrialde honetara sartzeak baimena behar du. Saioa hasteko edo direktorioak aldatzen saia zaitezke.
Orrialde honetara sartzeak baimena behar du. Direktorioak aldatzen saia zaitezke.
Evite
malloc()yfree(), prefiera lanothrowversión denewcondelete(r.10)
Esta marca de advertencia se coloca dónde malloc o free se invocan explícitamente de acuerdo con R.10: Evite malloc y free. Una posible corrección para estas advertencias sería usar std::make_unique para evitar la creación y destrucción explícitas de objetos. Si esta corrección no es aceptable, debe preferirse el operador new y delete . En algunos casos, si no se admiten malloc excepciones y free se puede reemplazar por la versión nothrow de los operadores new y delete.
Comentarios
Para detectar
malloc(), comprobamos si una llamada invoca una función global denominadamallocostd::malloc. La función debe devolver un puntero avoidy aceptar un parámetro de tipo entero sin signo.Para detectar
free(), comprobamos las funciones globales denominadasfreeostd::freeque no devuelven ningún resultado y aceptamos un parámetro, que es un puntero avoid.
Nombre de análisis de código: NO_MALLOC_FREE
Consulte también
Directrices principales de C++ R.10
Ejemplo
#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);
}