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++に見られるエラーで
- 同じものを二度deleteした場合
- オペレータ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