Re: [boost] C++ Boost library - passing Shared pointer to a function

I am looking for a project which is converting c malloc/realloc to shared_ptr. During my Analysis, I found the issue Can anyone provide me some input how to fix below issue 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; allocateBlocks(&p, &count); /*do something*/ free(p); } How can I achieve the similar functionality using shared ptr as shown in above code

On Sep 9, 2012 8:34 PM, "abhishek goswami" <zeal_goswami@yahoo.com> wrote:
I am looking for a project which is converting c malloc/realloc to
shared_ptr. During my Analysis, I found the issue
Can anyone provide me some input how to fix below issue
typedef boost::shared_ptr<Employee_t> srdpointer;
srdpointer
ptr((Employee_t*)malloc(sizeof(Employee_t)),std::ptr_fun(free)); This is only valid if Employee_t is a POD type. Otherwise you also have to call its destructor.
How can I achieve the similar functionality using shared ptr as shown in above code
void allocateBlocks(shared_ptr<int>& ptr, unsigned int& cnt) { ptr.reset((int*)malloc(sizeof(int)*10), &free); // also check ptr for NULL here cnt = 10; } int main() { unsigned int cnt = 0; shared_ptr<int> ptr; allocateBlocks(ptr, cnt); } You can also return ptr from the function, which will simplify usage.
participants (2)
-
abhishek goswami
-
Andrey Semashev