C++プログラムのエラー

C++でプログラムを書いてみた。
あるマシン(machineB)ではg++でコンパイルでき、プログラムもうまく走ったが、
別のマシン(machineA)に移行してもう一度コンパイルし、プログラムを走らせてみると、

[my_account@machineA ~/solexa_mapping]$ g++ -m64 sample_program.cpp -o sample_program
[my_account@machineA ~/solexa_mapping]$ ./sample_program < input.dat
*** glibc detected *** double free or corruption (out): 0x000000000050d0b0
***
アボート

あれ、うまくいかない(>_<)
正直原因は全く意味不明。
ラチがあかないのでこのエラーメッセージをGoogle検索にかけてみると
意外にたくさんのサイトが引っかかった。
各サイトを見てまとめてみたところ、
これはふるいLinux C++に見られるエラーで

  1. 同じものを二度deleteした場合
  2. オペレータnewで割り当てたものをdeleteした場合

に起るらしい。
解決策は環境変数MALLOC_CHECK_を0にすればよいらしい。
そこで

[my_account@machineA ~/solexa_mapping]$ setenv MALLOC_CHECK_ 0
[my_account@machineA ~/solexa_mapping]$ setenv
....
MALLOC_CHECK_=0
.....

と設定してもう一度走らせてみると

[my_account@machineA ~/solexa_mapping]$ ./sample_program < input.dat
Program is running....

やったうまくいった(^o^)v