簡體   English   中英

C++ 用 function 刪除指針

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM