XML4C を使う。この中に XMLString をローカルな文字列に変換する関数,transcode というのがあるのだが,この関数は内部で new した文字列を返す。当然後で delete しなくてはならないのだが,ここで問題が発生。XML4C のライブラリは DLL になっているので,DLL で new したメモリを exe 側で delete しなくてはならず,デバッグ版(だけ?)ではメモリ管理の不整合が起きて assertion されてしまう。
結局こんな感じで無理矢理解決。
DOMString dom_str("aaa"); const XMLCh *xml_ch = dom_str.rawBuffer(); char local_str[255]; XMLString::transcode(xml_ch, local_str, dom_str.length());