[SikiLanguage] [式鬼言語航海日誌] 2007-09-08
2007/09/08_000000ちょっとメモです。
コイツのせいで一日丸々無駄にしました……
「何やったンだい、一体」
いや、プログラムを組んでいて急に HEAP[test.exe]: Invalid Address specified to RtlFreeHeap というエラーが出て来るようになったので、一体全体どうしたのか、と。
「ほお」
まあ、どこかでアクセス違反でもしているのかと思いましたが、それにしてもおかしい。第一エラーが発生しているのはboost::xpressiveの奥の方。
最初はboost::xpressiveの使い方でも失敗したのかと思ったのですが、実際は全然関係なくて、コンパイルオプションの設定ミスでした。
“C/C ”の“プリプロセッサの定義”でDEBUGを指定しているにもかかわらず、“コード生成”の“ランタイム ライブラリ”をマルチスレッド(/MT)に指定してしまっていたんですね。
あとは上記のリンク先にある通りです。式鬼のソースはDEBUG指定をベースにコンパイルされているにもかかわらず、boost::testで使用するライブラリは“libboost_unit_test_framework-vc80-mt-s-1_34_1.lib”(マルチスレッド版)になってしまい、メモリの解放でエラーが発生……
「あらら、マヌケだねぇ」
制作・著作: 野分(nowake) at fiercewinds.net (Creative Commons 表示-継承 2.1 日本)