Чтобы получить функцию 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
.