1 c++
考虑一下,我已经初始化了unique_ptr这样的:
unique_ptr<uint_8[]> pixels{nullptr};
Run Code Online (Sandbox Code Playgroud)
之后,我决定分配一个新数组:
pixels = new uint_8[10];
Run Code Online (Sandbox Code Playgroud)
不幸的是,它不允许分配一个大小为10*8的新数组.我知道,我可以简单地分配,std::make_unique<uint_8[]>(10)但我只是想了解智能指针.
所以基本上,问题是:
nullptr转换为新数组?nullptrC++ 11中是否有某些特定类型?pixels = new uint_8[10];
Run Code Online (Sandbox Code Playgroud)
这意味着operator=的std::unique_ptr将被使用.不过,如果你看看所有的operator= 重载,你会发现,没有服用过载T*的std::unique_ptr<T[]>.
调用您需要的方法reset,它会重置std::unique_ptr使用较新值存储的旧值:
pixels.reset(new uint_8[10]);
Run Code Online (Sandbox Code Playgroud)