论编译器的玄学性
  • 板块灌水区
  • 楼主SfumatoCannon_
  • 当前回复10
  • 已保存回复10
  • 发布时间2021/5/1 17:19
  • 上次更新2023/11/4 23:53:43
查看原帖
论编译器的玄学性
125429
SfumatoCannon_楼主2021/5/1 17:19

写代码:

bool spike_judge_d[32][32]={0,0,0,0,0,0,0,0, ...};
    
bool spike_judge_l[32][32]={0,0,0,0,0,0,0,0, ...};

bool spike_judge_r[32][32]={0,0,0,0,0,0,0,0, ...};

bool spike_judge_u[32][32]={0,0,0,0,0,0,0,0, ...};

正常运行

然后我想,我加这个初始化干嘛是不是傻,删掉:

bool spike_judge_d[32][32];

bool spike_judge_l[32][32];

bool spike_judge_r[32][32];

bool spike_judge_u[32][32];

RE了,错误信息:函数在返回时对【某个地址】的调用出错。

我裂开了,改回来:

bool spike_judge_d[32][32]={0,0,0,0,0,0,0,0, ...};
    
bool spike_judge_l[32][32]={0,0,0,0,0,0,0,0, ...};

bool spike_judge_r[32][32]={0,0,0,0,0,0,0,0, ...};

bool spike_judge_u[32][32]={0,0,0,0,0,0,0,0, ...};

又对了

卧槽,这什么玄学玩意,还不让我删了?好,今天老子偏要把你删掉!

spike_judge_u的初始化删掉,正常运行

再把spike_judge_r的初始化删掉,正常运行

再把spike_judge_l的初始化删掉,正常运行

再把spike_judge_d的初始化删掉,——???又RE了?

spike_judge_u,spike_judge_r,spike_judge_l的初始化加上,仍然RE

再把spike_judge_d的初始化加上,又正常运行

至此,问题排查完毕,就是spike_judge_d出了事。。。

但我也没对他进行过什么特别的操作啊?

就在我百思不得其解之时,我随便作了个尝试,死马当作活马医,干脆把它们定义的位置调换一下:

bool spike_judge_d[32][32];

bool spike_judge_l[32][32];

bool spike_judge_r[32][32];

bool spike_judge_u[32][32];//从最前面移到了最后面

???居然正常运行了!

百思不得其解的我又把它调换回原位:

bool spike_judge_u[32][32];

bool spike_judge_d[32][32];

bool spike_judge_l[32][32];

bool spike_judge_r[32][32];

???也是正常运行?

你三分钟前不还是运行错误吗?


再总结一下:

bool spike_judge_u[32][32];

bool spike_judge_d[32][32];

bool spike_judge_l[32][32];

bool spike_judge_r[32][32];

↑运行错误

调换一下:

bool spike_judge_d[32][32];

bool spike_judge_l[32][32];

bool spike_judge_r[32][32];

bool spike_judge_u[32][32];

↑运行正常

再调换回来

bool spike_judge_u[32][32];

bool spike_judge_d[32][32];

bool spike_judge_l[32][32];

bool spike_judge_r[32][32];

↑运行正常


今天,我明白了,要用玄学来打败玄学。/yun

2021/5/1 17:19
加载中...