【发布时间】:2017-09-06 09:19:56
【问题描述】:
来自“Effective C++ 3rd edition by Scott Meyers”:
为了强调未定义行为的结果是不可预测的并且可能非常令人不快,有经验的 C++ 程序员经常说未定义行为的程序会擦除您的硬盘。
在什么情况下会发生这种情况?
例如,访问和写入超出数组范围的位置是否会损坏不属于此 C++ 程序或线程的内存?
【问题讨论】:
-
@ShumailMohy-ud-Din 是的,正确的。通过斯科特迈耶斯
-
举个例子。有一个功能可以擦除硬盘驱动器。现在,您刚刚为函数指针分配了一些整数,不幸的是,它恰好是擦除硬盘驱动器的函数的地址。如果您通过取消引用函数指针来调用该函数,则会擦除 HDD。
-
多次调用 UB 我已经擦除了我使用的系统闪存的重要部分。
-
当它调用 UB 时,我差点用条形码扫描仪给自己做激光眼科手术,而且我认识一个人的显示器起火了。但我从未见过硬盘被擦除。但它可能会发生。
-
未定义的行为会让恶魔飞出你的鼻子...... - catb.org/jargon/html/N/nasal-demons.html
标签: c++ memory undefined-behavior