检测到段故障和堆栈粉碎之间的差异

she*_*zou 4 c

我遇到过两种错误,一种是分段错误,另一种是Stack smashing检测到.我想知道它们之间有什么不同以及造成它们的不同原因.

Rin*_*g Ø 7

这通常是未定义的行为.

  • 分段错误通常是在您的进程访问其无权访问的内存位置或该位置不存在时.

  • 堆栈粉碎是一种警报(例如由gcc生成),用于警告例如堆栈上的边界访问.通常,当堆栈写入不应该写入的位置时会发生这种情况 - 就像写入索引超出范围的本地数组一样.

您的代码中存在一个产生未定义行为的问题.也许您可以与我们分享,以便我们可以帮助您.

特别检查:

  • 超出数组边界访问
  • NULL指针


iGR*_*GRJ 2

分段错误是由具有内存保护功能的硬件引发的错误,通知操作系统 (OS) 有关内存访问违规的信息。当程序的调用堆栈中存在数据溢出时,就会报告堆栈崩溃。一般来说,程序的调用堆栈是固定长度的。