通过从原始指针复制垃圾数据来初始化 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() );