一般的な定義は、
「オブジェクトがメモリに格納されているが、実行中のコードからアクセスできない」
という誤ったメモリ管理の結果。
#Segmentation Fault
メモリの特定の領域に対するアクセス違反が検出された時に発生する例外(割り込みと言ったほうがいいかもしれません)の総称
以下のような場合に起こる。
- メモリが割り当てられていない領域にアクセスしようとした(*)
- 書き込みが禁止されている領域に書き込もうとした
- 実行が禁止されている領域のコードを実行しようとした
スタックオーバーフローはSegmentation Faultの原因の大きな一つですが、Segmentation Faultはそれとは独立した概念です。
#スタックトレース
エラーが発生したときに表示される内容で、そのエラーが発生するまでの過程(どんな処理がどの順番で呼び出されたかの流れ)を、ざっくりと表示したもの
メモリのスタック領域の内容が表示されているのでスタックトレースと言います
-fno-omit-frame-pointer
コンパイル時にこのオプションをつけると、スタックトレースが改善されます。
-fno-omit-frame-pointer
引用
MacにおけるGCCとClang
https://zenn.dev/mu/articles/f0b6f07bf6b397