gpt4 book ai didi

c++ - 这个语句*(long*)0=0;的作用是什么?

转载 作者:IT老高 更新时间:2023-10-28 12:35:15 27 4
gpt4 key购买 nike

在下面的代码中,*(long*)0=0;if 子句一起使用,但它的作用是什么?

if(r.wid*r.ht < tot)
*(long*)0=0;

最佳答案

它将 0 写入 0,解释为 long 的地址,即 NULL 指针。这不是一件有效的事情,因为 NULL 绝不是您可以有效地拥有程序可以访问的数据的地址。此代码触发未定义的行为;一般来说,你不能依赖它来产生任何特定的效果。

然而,经常使用这样的代码来强制 segmentation fault -type crash,有时可以方便地放入调试器中。

同样,这是未定义的行为;不能保证它会导致这样的错误,但是在有段错误的系统上,上面的代码很可能会产生一个。在其他系统上,它可能会做一些完全不同的事情。

如果遇到段错误,有时以这种方式触发比在调试器中手动设置断点更方便。例如,如果您不使用 IDE,通常更容易将这几个标记键入到所需位置的代码中,而不是向调试器提供(文本)命令,指定确切的源代码文件和行号手动可能有点烦人。

关于c++ - 这个语句*(long*)0=0;的作用是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21376602/

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