c-缓冲区溢出是与程序堆栈相关的唯一可能的错误吗



缓冲区溢出是与C/C++程序堆栈相关的唯一可能的错误吗?在单/多线程C/C++程序的程序堆栈中是否存在其他可能发生的错误。

我读了这篇关于并发错误的论文(从错误中学习——对现实世界并发错误特征的全面研究(,并开始认为这种并发错误不会发生在堆栈中,因为它对线程是私有的。

感谢

您可以尝试使用过多的堆栈,通常会导致分段故障(硬件报告程序试图访问未映射或未映射的内存,而操作系统无法通过更改内存映射来提供访问(。

您可能不正确地使用指针或数组索引(不仅是缓冲区溢出,还有流向另一个方向的"下溢"或其他不正确的地址计算(,损坏堆栈,这可能会以各种方式改变程序执行,导致程序控制权转移到不需要的位置,或损坏数据,并导致不需要的计算。

最新更新