C ++ Boost library — передача общего указателя на функцию

Предполагая, что общий указатель может быть создан следующим образом

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

Решение

Вы имеете в виду что-то подобное?

void allocateBlocks( boost::shared_ptr<int>& out, int& count )
{
out.reset(new int[...]);
count = 10;
}

PS: я предлагаю взглянуть на boost :: shared_array<> & друзья просто для динамического распределения массивов.

PS: будет STD :: вектор<> также делать?

-1

Другие решения

Других решений пока нет …