【发布时间】:2011-07-25 08:50:22
【问题描述】:
我知道一些 Java,现在正在尝试 C++,显然在 C++ 中你可以做一些事情,比如声明一个大小为 6 的 int 数组,然后更改该数组的第 10 个元素,我理解它只是第 4 个元素为 6 整数数组分配的内存部分结束后的字节。
所以我的问题是,如果我不小心,是否有可能意外更改系统上其他程序正在使用的 C++ 程序中的内存?以这种方式严重搞砸事情是否存在实际风险?我的意思是我知道你可以在必要时重新启动计算机并清除内存,但如果我不这样做,可能会造成一些持久的损害。
【问题讨论】:
-
除非你在 ring 0 模式下工作,否则你不必担心这些东西。
-
你的说法有一个小错误,后面不是第4个字节,如果你的系统是32位的话,它后面的第4个int是16个字节。
-
黑客故意制造的每一个问题当然也可能无意中发生。鉴于此,this rather new article 解释了如何通过故障软件损坏硬件。