Щоб отримати void *
функцію з CI, зробимо щось подібне (дуже базовий приклад):
void *get_ptr(size_t size)
{
void *ptr = malloc(size);
return ptr;
}
Як досягти однакового результату при використанні std::unique_ptr<>
?
stackoverflow.com/questions/4316727 / ...
—
dragosht
Поясніть, будь ласка, яку проблему у вас виникає.
—
molbdnilo
Дивіться цей відповідь для загального незначною unique_ptr: stackoverflow.com/a/39288979/2527795
—
Vll
Зверніть увагу, що майже ніколи не повинно бути причин використовувати
—
волоський горіх
malloc
подібний C ++. Ви повертаєте вказівник на необроблену пам'ять, на яку вам потрібно розмістити нові об'єкти, перш ніж ви зможете ним користуватися. Якщо у вас немає вагомих причин створювати об'єкти пізніше, ніж тоді, коли ви виділяєте пам’ять, тоді вам слід використовувати new
або std::make_unique
який буде виділяти пам'ять, а також створювати відповідні об’єкти. В будь-якому випадку std::vector
з reserve
є проблемою. краще теж. Навіть якщо ви їх не використовуєте, operator new
це ідіоматичний спосіб розподілу пам'яті, чи не malloc
.