访问超出界限的数组有多危险?
访问超出其界限的数组(在C中)有多危险?有时会发生这样的情况:我从数组外部读取(我现在了解了,然后访问了程序中其他部分使用的内存,甚至超出了内存),或者我试图为数组之外的索引设置一个值。程序有时崩溃,但有时只是运行,只会产生意想不到的结果。
现在我想知道的是,这到底有多危险?如果它破坏了我的节目,也不会那么糟糕。另一方面,如果它破坏了我程序之外的东西,因为我设法访问了一些完全无关的内存,我想这是非常糟糕的。我读了很多“任何事情都可能发生”,“分割可能是最不坏的问题”“你的硬盘可能会变成粉红色,独角兽可能会在你的窗户下唱歌”,这一切都很好,但真正的危险是什么呢?
我的问题:
- 除了我的程序之外,从数组之外读取值会破坏任何东西吗?我可以想象,仅仅看东西就不会改变什么,或者它会改变我碰巧到达的文件的“上次打开”属性吗?
- 除了我的程序之外,在数组之外设置值可以破坏任何东西吗?从这里
堆栈溢出问题
据我所知,访问任何内存位置都是可能的,没有安全保障。 - 我现在XCode内部运行我的小程序。这是否为我的程序提供了额外的保护,使其无法超出自己的记忆范围?它会伤害XCode吗?
- 对于如何安全地运行我固有的错误代码,有什么建议吗?
我使用OSX10.7,Xcode 4.6。