Para obtener un void *
de una función en CI haría algo como esto (ejemplo muy básico):
void *get_ptr(size_t size)
{
void *ptr = malloc(size);
return ptr;
}
¿Cómo logro el mismo resultado cuando lo uso std::unique_ptr<>
?
c++
c
unique-ptr
ZeppRock
fuente
fuente
malloc
en C ++ como este. Está devolviendo un puntero a la memoria sin procesar, en la que necesita colocar objetos nuevos antes de poder usarlo. Si no tiene una buena razón para crear los objetos más tarde que cuando está asignando memoria, entonces debe usarnew
ostd::make_unique
que asignará memoria, así como crear objetos apropiados. En cualquier casostd::vector
conreserve
es prob. mejor también Incluso si no usa estos,operator new
es la forma idiomática de asignar memoria, nomalloc
.