0

我有一个如下所示的代码

if ((client == NULL) || (client->type == Leave_Agent)) {

但是当我用以下代码更改它时,我在事件日志中收到错误修改后的代码如下所示

if (((client == NULL)|| (client->type == Leave_Agent)) && (client->type == 0)) {

事件日志中的错误是

Faulting application name: test.exe, version: 8.0.16.0, time stamp: 0x5036427e

任何人都可以指导我如何解决这个问题,这会停止我的应用程序。 && 运算符会在 c++ 中产生任何问题?

4

3 回答 3

3
if (((agent == NULL)|| (agent->type == SPUES_ntAgent)) && (agent->type == 0))

如果代理是,NULL那么左侧&&将始终为真并且agent->type将始终被访问。因此,NULL代理确保NULL取消引用。

您应该更改您的代码以确保它仅在它不为 NULL 时才被取消引用。

于 2012-08-23T15:00:03.147 回答
2

我认为您想移动 () 以便在指针为 NULL 时永远不会取消引用:

if ((agent == NULL)|| ((agent->type == SPUES_ntAgent) && (agent->type == 0))) {
于 2012-08-23T14:59:49.323 回答
2

问题是你可以达到这个

agent->type == 0

agent==NULL.

在不知道您期望什么行为的情况下,我无法评论如何解决。至少你应该确保agent如果它是==NULL.

于 2012-08-23T15:00:12.757 回答