gpt4 book ai didi

c++ - 在 C++ 中验证指向指针的指针

转载 作者:行者123 更新时间:2023-11-28 01:38:53 28 4
gpt4 key购买 nike

我正在尝试编写一个函数来接收一个指针,使用它,然后使它指向一个新对象。为此,我使用了 ptr-to-ptr。这就是我验证函数接收到的 ptr-to-ptr 的方式:

void modifyPtr(Obj ** ptrToPtr)
{
if (*ptrToPtr == nullptr)
{
return;
}
else
{
// Do everything else!
}
}

在写这篇文章时,我想:如果客户将以下内容传递给我的函数怎么办?

Obj ** ptrToPtr = nullptr;
modifyPtr(ptrToPtr);

在那种情况下,我的验证将是危险的,因为我将取消引用 nullptr。那么,我是否应该添加额外的验证步骤?

void modifyPtr(Obj ** ptrToPtr)
{
if (ptrToPtr == nullptr)
{
return;
}
else if (*ptrToPtr == nullptr)
{
return;
}
else
{
// Do everything else!
}
}

我以前从未见过这样的验证,这就是我犹豫的原因。

请注意,我知道应该避免在 C++ 中使用原始指针。我正在使用旧代码,我发现这个问题很有趣。

最佳答案

您的第一次验证是错误的,因为您在检查它是否为 null 之前取消引用 ptrToPtr

您可能不需要检查取消引用的指针是否为 null,因为无论如何您都将更改它(除非您需要对旧对象执行某些操作)。

但是,您应该更喜欢使用引用而不是双指针,例如:

void modifyPtr(Obj* &Ptr)

那么调用者就不能传入空引用(不做丑陋的黑客攻击)。

关于c++ - 在 C++ 中验证指向指针的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48178943/

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