|
|
1
1
C标准中没有任何规定,当你超出分配的内存时,C实现应该给你内存访问违规。也没有合适的教程或教科书。一些学习材料可能提到了分段错误 五月 发生了,但这不是肯定的。
通常,不可能保证内存访问违规,因为硬件通常以称为页面的块(通常为4096或8192字节)处理内存,但
没有指定标准的C内存管理例程来防止不正确的访问。C通常不是为了防止你的程序做不正当的事情而设计的。它是为了帮助你编写低开销的程序。作为其中的一部分,它避免了检查程序所做一切的开销。作为一名程序员,你的工作就是确保你的程序是正确的。 至于你的两个代码序列之间的区别,其中一个在超越数组时,碰巧改变了内存管理例程用于记录保存的数据。当他们检测到这一点时,他们报告了一个错误。区别可能是两个代码序列在内存中的排列方式不同。 |