【发布时间】:2020-05-03 01:53:09
【问题描述】:
要从 C 中的函数中获取 void *,我会执行以下操作(非常基本的示例):
void *get_ptr(size_t size)
{
void *ptr = malloc(size);
return ptr;
}
使用std::unique_ptr<>时如何获得相同的结果?
【问题讨论】:
-
请说明您在执行此操作时遇到了什么问题。
-
查看通用 void unique_ptr 的答案:stackoverflow.com/a/39288979/2527795
-
请注意,像这样在 C++ 中使用
malloc几乎没有理由。您正在返回一个指向原始内存的指针,您需要在允许使用它之前将新对象放置到该指针中。如果您没有充分的理由在分配内存之后创建对象,那么您应该使用new或std::make_unique来分配内存并创建适当的对象。在任何一种情况下,std::vector和reserve都是概率。也更好。即使你不使用这些,operator new是分配内存的惯用方式,而不是malloc。
标签: c++ c unique-ptr