Reputation: 1
Assuming shared pointer can be created as follows
typedef boost::shared_ptr<Employee_t> srdpointer;
srdpointer ptr((Employee_t*)malloc(sizeof(Employee_t)),std::ptr_fun(free));
I need to pass the shared pointer which will allocate memory Pointed by the ptr. Something like this.
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);
}
How can I achieve the similar functionality using shared_ptr
as shown in above code.
Upvotes: 0
Views: 373
Reputation: 935
Do you mean something like this?
void allocateBlocks( boost::shared_ptr<int>& out, int& count )
{
out.reset(new int[...]);
count = 10;
}
PS: I suggest having a look at boost::shared_array<> & friends for just allocating arrays dynamically.
PS: Would an std::vector<> also do?
Upvotes: -1