假设可以按如下方式创建共享指针
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
实现类似功能,如上面的代码所示。
答案 0 :(得分:-1)
void allocateBlocks( boost::shared_ptr<int>& out, int& count )
{
out.reset(new int[...]);
count = 10;
}
PS:我建议看一下boost :: shared_array&lt;&gt; &安培;朋友只是动态分配数组。
PS:std :: vector&lt;&gt;也呢?