应用程序的错误应用程序名称问题

时间:2012-08-23 14:56:47

标签: c++ visual-studio-2005

我有一个如下所示的代码

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 ++中出现任何问题吗?

3 个答案:

答案 0 :(得分:3)

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

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

您应该更改代码,以确保只有取消引用,如果它不是NULL。

答案 1 :(得分:2)

我认为你想移动(),以便你永远不要取消引用指针,如果它是NULL:

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

答案 2 :(得分:2)

问题是你可以达到这个

agent->type == 0

agent==NULL时。

我无法评论如何在不知道您期望的行为的情况下进行修复。至少,如果agent ==NULL,则应确保{{1}}不被取消引用。