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<>
?
stackoverflow.com/questions/4316727/…
—
dragosht
Por favor, explique qué problema tiene al hacerlo.
—
molbdnilo
Vea esta respuesta para void genérico unique_ptr: stackoverflow.com/a/39288979/2527795
—
vll
Tenga en cuenta que casi nunca debería haber una razón para usar
—
nogal
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 usar new
o std::make_unique
que asignará memoria, así como crear objetos apropiados. En cualquier caso std::vector
con reserve
es prob. mejor también Incluso si no usa estos, operator new
es la forma idiomática de asignar memoria, no malloc
.