gpt4 book ai didi

c++ - char指针的删除函数

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:50:42 26 4
gpt4 key购买 nike

我想在 char 指针上使用一个唯一的指针。我需要知道在哪些情况下需要将删除函数传递给 unique_ptr。

std::unique_ptr<char[]> pChar(new char [size])

还有,

 std::unique_ptr<char*> pChar(new char [size])

我猜对于 char[],编译器会调用 delete[],但是 char* 呢?

谢谢

最佳答案

对于 char[]编译器选择 std::default_delete<char[]> ,实际上调用了 delete[] , 对于 char*编译器选择 std::default_delete<char*> ,实际上调用了 delete .

但是,您不能初始化std::unique_ptr<char*> , 当你尝试的时候,因为 T , std::unique_ptr<T>::pointer就是T* .

你可以使用这样的东西,但我认为 smart_pointer指针,很奇怪

   char* pp = new char[1];
auto deleter = [](char** p) { delete[] *p; };
std::unique_ptr<char*, decltype(deleter)> p(&pp, deleter);

关于c++ - char指针的删除函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16295983/

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