我有一个问题。是否可以删除带有功能的指针?这是我的示例:
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/