[英]C++ Deleting pointer with function
我有一個問題。 是否可以使用 function 刪除指針? 這是我的例子:
void deletePointer(auto* pointer)
{
delete pointer;
pointer = nullptr;
}
int main()
{
int value = 5;
int* value_ptr = &value;
//Some code
deletePointer(value_ptr);
return 0;
}
它不起作用。 我還嘗試將“內聯”關鍵字添加到 function 和 lambda。
auto deletePointer = [&](auto* pointer) -> void
{
delete pointer;
pointer = nullptr;
}
我認為它只會刪除 function、lambda 內部的指針。 是否可以使 function 刪除指針,該指針傳遞給 function?
解決方案。
我知道只有在 object 使用new
創建時才能使用delete
。 所以我稍微改變了代碼。
#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;
}
並從代碼中給出 output 是: Succeed
。 所以現在一切正常。 感謝幫助:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.