Чтобы получить функцию void *из CI, нужно сделать что-то вроде этого (очень простой пример):
void *get_ptr(size_t size)
{
void *ptr = malloc(size);
return ptr;
}
Как добиться того же результата при использовании std::unique_ptr<>?
stackoverflow.com/questions/4316727/…
—
dragosht
Пожалуйста, объясните, какая у вас проблема с этим.
—
молбднило
Смотрите этот ответ для универсального void unique_ptr: stackoverflow.com/a/39288979/2527795
—
vll
Обратите внимание, что почти никогда не должно быть причин для использования
—
грецкий орех
mallocв C ++, как это. Вы возвращаете указатель на необработанную память, в которую вам нужно поместить новые объекты, прежде чем вы сможете использовать их. Если у вас нет веской причины для создания объектов в более позднее время, чем когда вы выделяете память, вам следует использовать newили std::make_uniqueкоторый выделит память, а также создать соответствующие объекты. В любом случае std::vectorс reserveявляются пробы. лучше тоже. Даже если вы их не используете, operator newэто идиоматический способ распределения памяти, а не malloc.