gpt4 book ai didi

c++ - 将 std::unique_ptr 重置为指向数组的指针有什么问题?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:09:21 24 4
gpt4 key购买 nike

我看到如下代码片段:

std::unique_ptr<uint8_t> mCache;
mCache.reset(new uint8_t[size]);

有人告诉我这段代码有一些问题。谁能给我一些细节?

最佳答案

给定std::unique_ptr<uint8_t> mCache; , 当 mCache被摧毁了它的deleter将使用 delete销毁被管理的指针(如果有的话),即为单个对象释放内存。但是在mCache.reset(new uint8_t[size]);之后什么mCache manages 是指向数组的指针,这意味着它应该使用 delete[]反而;使用 delete为数组释放内存会导致 UB。

代码可以改成

std::unique_ptr<uint8_t[]> mCache; // mCache is supposed to manage pointer to array
mCache.reset(new uint8_t[size]); // safe now

关于c++ - 将 std::unique_ptr 重置为指向数组的指针有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51855246/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com