通过从原始指针复制垃圾数据来初始化 std::shared_ptr
Initialize std::shared_ptr by copying a junk of data from a raw pointer
基本上我希望达到的目标:
int pBuf = {1, 2, 3, 4, 5, 6};
std::shared_ptr<int> pPtr(pBuf, _ARRAYSIZE(pBuf));
以下语法无效,有可能吗?
我需要使用 shared_ptr.
如果您要创建数组 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() );
基本上我希望达到的目标:
int pBuf = {1, 2, 3, 4, 5, 6};
std::shared_ptr<int> pPtr(pBuf, _ARRAYSIZE(pBuf));
以下语法无效,有可能吗? 我需要使用 shared_ptr.
如果您要创建数组 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() );