Щоб отримати 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.