【发布时间】: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::vector
会满足你的需要。 -
您是否知道,
reset()ingshared_ptr实例与新指针不会改变其他shared_ptr实例(它们将指向旧对象)?
标签: c++ boost shared-ptr scoped-ptr