下面这行代码是什么意思?
*(volatile unsigned int *) 0x00 = 0x00;
在Assert定义中使用:
void Assert()
{
// (some other code above)
*(volatile unsigned int *) 0x00 = 0x00;
return;
}
最佳答案
我猜它试图导致程序因段错误或类似问题而崩溃。
编写代码的人都在想“我希望编译器不会优化这个崩溃,所以让我们在指针解引用前面放一个 volatile”。
但是所有代码正在做的是导致不保证崩溃的未定义行为。
std::terminate()
是一个更好的选择,如果你想让你的程序终止那么 UB Assert()
另请注意,应为断言指定条件,然后如果条件为假,则断言应触发一些失败代码。 Ot 并不意味着是一个“退出这个程序”的功能。参见 linked comment
关于c++ - *(volatile unsigned int *) 0x00 = 0x00; 的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44669294/