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<>?
mallocin 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 newo std::make_uniqueche allocerà la memoria, nonché creare oggetti appropriati. In entrambi i casi std::vectorcon reserveis prob. anche meglio. Anche se non li usi, non operator newè il modo idiomatico di allocare memoria malloc.