#include int main(){ int c[4]; c[4] = 0; return 0; }
このsample.cppを
$ g++ -g sample.cpp -o sample $ ./sample
とソースでインストールしたg++4.4.3でビルドすると領域破壊を検出しないのに、
$ /usr/bin/g++ -g sample.cpp -o sample $ ./sample セグメンテーション違反です
CentOS標準のg++4.1.2でビルドすると、セグメンテーション違反を検出する。
バージョン低い方が高性能ってどういうこと・・・。
ビルドオプションが何か足りないのだろうか・・・・。
ちなみに余談だが、上記のコードはValgrind、ElectricFenceのどちらにおいてもエラーを検出できない。
Valgrindは動的領域のチェックのみで、静的領域、スタック領域の領域破壊に対応していないが、ElectricFenceも同じようだ。