c++ - C++删除具有功能的指针

标签 c++ pointers

我有一个问题。是否可以删除带有功能的指针?这是我的示例:

void deletePointer(auto* pointer)
{
    delete pointer;
    pointer = nullptr;
}

int main()
{
    int value = 5;
    int* value_ptr = &value;

    //Some code

    deletePointer(value_ptr);

    return 0;
}

而且它不起作用。我还尝试向功能和lambda添加“inline”关键字。

auto deletePointer = [&](auto* pointer) -> void
{
    delete pointer;
    pointer = nullptr;
}

我认为它只会删除lambda函数内部的指针。是否有可能使函数删除传递给函数的指针?

最佳答案

解。

我知道delete仅在使用new创建对象时可以使用。所以我稍微修改了代码。

#include <iostream>

void deletePointer(auto*& pointer)
{
    delete pointer;
    pointer = nullptr;
}

int main()
{
    int* ptr = new int(5);

    deletePointer(ptr);

    if (ptr == nullptr) std::cout << "Succeed";
    else std::cout << "Failed";

    return 0;
}

代码的给定输出是:Succeed
所以现在一切正常。
感谢帮助 :)

关于c++ - C++删除具有功能的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61045821/

相关文章:

c++ - 为只读成员赋值 - C++

c++ - 空嵌套元组错误

c++ - 为什么我需要在使用它的循环的每次迭代中清除 stringstream 变量

c++ - 结构内重载运算符的调用约定?

c - 将字符串指针传递给 C 中的函数时得到虚假结果

c - 无法确定节点中字符串数组的 malloc 参数

c++ - 带有模板参数的函数指针

c++ - 我正在使用 gdb 调用一个简单的 C++ 函数,但它失败了

C++ Qt 表达式 : _BLOCK_TYPE_IS_VALID(pHead->nBlockUse) error

C - 只有一个指针坐标相加,其余等于0