基本上我希望能够实现的目标:
int pBuf = {1, 2, 3, 4, 5, 6};
std::shared_ptr<int> pPtr(pBuf, _ARRAYSIZE(pBuf));
以下语法无效,甚至可能吗? 我需要使用shared_ptr。
答案 0 :(得分:1)
如果您要创建数组pBuf
的副本并将其分配给std::shared_ptr
,则以下代码应该有效:
int pBuf[] = {1, 2, 3, 4, 5, 6};
std::shared_ptr<int> pPtr( new int[_ARRAYSIZE(pBuf)], std::default_delete<int[]>() );
std::copy( pBuf, pBuf + _ARRAYSIZE(pBuf), pPtr.get() );