C ++ Boost库 - 将共享指针传递给函数

时间:2012-09-05 13:46:19

标签: c++ boost shared-ptr scoped-ptr

假设可以按如下方式创建共享指针

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实现类似功能,如上面的代码所示。

1 个答案:

答案 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;也呢?