C ++ Boost库 - 将共享指针传递给函数
Posted
技术标签:
【中文标题】C ++ Boost库 - 将共享指针传递给函数【英文标题】:C++ Boost library - passing Shared pointer to a function 【发布时间】:2012-09-05 13:46:18 【问题描述】:假设共享指针可以如下创建
typedef boost::shared_ptr<Employee_t> srdpointer;
srdpointer ptr((Employee_t*)malloc(sizeof(Employee_t)),std::ptr_fun(free));
我需要传递共享指针,它将分配由 ptr 指向的内存。 像这样的东西。
void allocateBlocks(int **ptr, int *cnt)
*ptr = (int*)malloc(sizeof(int) * 10);
*cnt = 10;
/*do something*/
int main()
int *p = NULL;
int count = 0;
locateBlocks(&p, &count);
/*do something*/
free(p);
如何使用shared_ptr
实现类似的功能,如上面的代码所示。
【问题讨论】:
请问您为什么使用malloc
而不是new
?
看起来像 std::vectorreset()
ing shared_ptr
实例与新指针不会改变其他 shared_ptr
实例(它们将指向旧对象)?
【参考方案1】:
你的意思是这样的吗?
void allocateBlocks( boost::shared_ptr<int>& out, int& count )
out.reset(new int[...]);
count = 10;
PS:我建议看看 boost::shared_array 和朋友们只是动态分配数组。
PS:std::vector 也可以吗?
【讨论】:
“请问您为什么使用 malloc 而不是 new” - 我们的应用程序是 C 和 CPP 代码的混合体。 -1 将malloc
-ed 内存传递给将使用delete
运算符释放它的构造。以上是关于C ++ Boost库 - 将共享指针传递给函数的主要内容,如果未能解决你的问题,请参考以下文章