在Visual中,BuildVision给出了一个错误,其中消息是< Struct at Null>
它和“结构是空”是一样的,还是有什么不同?
我问这个问题是因为我在网上找不到这条信息。我所能找到的只是指向“结构是零”,但我所发现的一切并没有帮助我!我想知道这是不是因为at
编辑:
我添加了一个调试器窗口的屏幕,其中包含< Struct at Null>- the。我还有第二个问题:我想用if- catch子句来捕捉这个例外。我该怎么说
if(value == <struct at NULL>)
this()
else
that()这不起作用,尽管调试器说值应该是。

在本例中,我尝试检查“分发”的组件是否为空,以确定分发对象的状态。以下是原始代码:
if (Distribution.distBrowserName() == NULL || Distribution.getShape() == NULL)
return false;
else
return true;发布于 2018-10-03 23:05:21
我最近也遇到了这个问题。在我的例子中,它是由取消引用空指针初始化的引用引起的。基本上,是这样的:
Foo * fooPtr = nullptr;
// ...
Foo & fooRef = *fooPtr;
// ...
fooRef.Bar() // read access violation即使在第三行抛出异常,问题实际上也在第二行,因为取消引用空指针是未定义的行为。在这里,它创建对无效对象的引用,Visual调试器将其表示为<Struct at NULL>。尝试访问此无效对象的成员将导致读取访问冲突。
如果仍然要验证引用是否为<Struct at NULL>,则可以通过将其地址与null进行比较来完成:
if (&fooRef != nullptr)
{
fooRef.Bar();
}下面是关于无效引用的其他一些有趣的问题:
发布于 2018-05-14 21:38:50
)(迟到三个月,但这是我的最佳搜索结果。希望我能帮助别人。)
要回答第一个问题:是的,<struct at NULL>意味着对对象(struct或类)的引用为空。此消息可以与悬空引用一起出现,就像您的情况一样。它还可以使用悬挂/空指针出现。
因此,对于您的第二个问题,在您的示例中是对Distribution对象本身的引用导致了问题,因此您可能在某个地方寻找一个悬空引用。
MSVS中一个人们经常忽略的有用特性是数据断点。如果你不熟悉他们,你可以在这里读到他们的故事。例如,在这种情况下,它可以帮助您跟踪您的Distribution变量是否在某个您意想不到的地方受到影响。
https://stackoverflow.com/questions/48863057
复制相似问题