它与“Struct is Null”是一样的,还是有什么不同? 我问这个问题是因为我在网上找不到任何-6ren">
gpt4 book ai didi

c++ - 与 "Struct is null"相同吗?

转载 作者:搜寻专家 更新时间:2023-10-31 00:27:29 25 4
gpt4 key购买 nike

在 Visual Studio 中,BuildVision 给我一个错误,消息是 at Null>

它与“Struct is Null”是一样的,还是有什么不同?

我问这个问题是因为我在网上找不到任何与此消息相关的内容。我能找到的所有内容都指向“Struct is Null”,但我找到的所有内容都没有帮助我!我想知道这是否是因为 at

编辑:

我使用 -Stuff 添加了调试器窗口的屏幕截图。我还有第二个问题:我想用 if-else 子句捕获这个异常。怎么说呢

if(value == <struct at NULL>)
this()
else
that()

这是行不通的,尽管调试器说该值为 .

enter image description here

在此示例中,我尝试检查“分布”的组件是否为空以确定 Distribution 对象的状态。这是原始代码:

if (Distribution.distBrowserName() == NULL || Distribution.getShape() == NULL)
return false;
else
return true;

最佳答案

我最近也遇到了这个问题。在我的例子中,它是由通过取消引用空指针初始化的引用引起的。基本上,它是这样的:

Foo * fooPtr = nullptr;
// ...
Foo & fooRef = *fooPtr;
// ...
fooRef.Bar() // read access violation

即使在第三行抛出异常,问题实际上出在第二行,因为解引用空指针是未定义的行为。在这里,它创建了对无效对象的引用,Visual Studio 调试器将其表示为 <Struct at NULL>。 .尝试访问此无效对象的成员会导致读取访问冲突。

如果您仍想验证引用是否为 <Struct at NULL> ,您可以通过将其地址与 null 进行比较来实现:

if (&fooRef != nullptr)
{
fooRef.Bar();
}

以下是关于无效引用的其他一些有趣问题:

Is null reference possible?

Why don't I need to check if references are invalid/null?

关于c++ - <Struct at NULL> 与 "Struct is null"相同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48863057/

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