0

共有ポインタを次のように作成できると仮定します

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上記のコードに示すように 、どうすれば同様の機能を実現できますか。

4

1 に答える 1

-1

このようなことを意味しますか?

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

PS: 配列を動的に割り当てるだけの場合は、boost::shared_array<> & friends を参照することをお勧めします。

PS: std::vector<> もできますか?

于 2012-09-05T13:51:20.617 に答える