Предполагая, что общий указатель может быть создан следующим образом
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
как показано в приведенном выше коде.
Вы имеете в виду что-то подобное?
void allocateBlocks( boost::shared_ptr<int>& out, int& count )
{
out.reset(new int[...]);
count = 10;
}
PS: я предлагаю взглянуть на boost :: shared_array<> & друзья просто для динамического распределения массивов.
PS: будет STD :: вектор<> также делать?
Других решений пока нет …