Dostać void *
z funkcji w CI, zrobiłbym coś takiego (bardzo prosty przykład):
void *get_ptr(size_t size)
{
void *ptr = malloc(size);
return ptr;
}
Jak osiągnąć ten sam rezultat podczas używania std::unique_ptr<>
?
malloc
w C ++ w ten sposób. Zwracasz wskaźnik do surowej pamięci, w której musisz umieścić nowe obiekty, zanim będziesz mógł z nich korzystać. Jeśli nie masz dobrego powodu, aby utworzyć obiekty w późniejszym czasie niż przy przydzielaniu pamięci, powinieneś użyć new
lub, std::make_unique
który przydzieli pamięć, a także utworzyć odpowiednie obiekty. W obu przypadkach std::vector
ze reserve
jest prob. też lepiej. Nawet jeśli ich nie używasz, operator new
to idiomatyczny sposób alokacji pamięci malloc
.