Per ottenere un void *
da una funzione in CI farebbe qualcosa del genere (esempio molto semplice):
void *get_ptr(size_t size)
{
void *ptr = malloc(size);
return ptr;
}
Come posso ottenere lo stesso risultato durante l'utilizzo std::unique_ptr<>
?
malloc
in C ++ in questo modo. Stai restituendo un puntatore alla memoria non elaborata, in cui devi posizionare nuovi oggetti prima che ti sia permesso di usarlo. Se non si ha una buona ragione per creare gli oggetti in un secondo momento rispetto a quando si sta allocando la memoria, è necessario utilizzare new
o std::make_unique
che allocerà la memoria, nonché creare oggetti appropriati. In entrambi i casi std::vector
con reserve
is prob. anche meglio. Anche se non li usi, non operator new
è il modo idiomatico di allocare memoria malloc
.