回答編集履歴

1

コードが変わったので追記

2015/12/09 04:42

投稿

catsforepaw
catsforepaw

スコア5938

test CHANGED
@@ -3,3 +3,23 @@
3
3
 
4
4
 
5
5
  コードを見ると、if文の条件が合わずにブロックの中を処理しなかった場合、attrivalが未設定(不正なポインタ)のままprocess関数が実行されて、xmlFree関数に渡されていますけど、そのせいではないでしょうか。
6
+
7
+
8
+
9
+ ---
10
+
11
+ コードが変わったので追記
12
+
13
+
14
+
15
+ `st`は変数としてどこかで定義しているのでしょうか。その際、初期化していないと今度はst.moziが未設定なので、やはり不正なポインタが渡されることになります。
16
+
17
+
18
+
19
+ process関数や省略の部分でどのような処理を行っているのか判らないので適切な判断が下せませんが、とりあえず、ポインタ変数は定義と同時に初期化(nullptrを代入)してみてください。
20
+
21
+
22
+
23
+ できれば、xmlFreeはifブロックの中(process実行後)で実行した方が良いです。そして、C++なら文字列を扱う際は**STL**の`string`クラスを使用することを強くお勧めします。
24
+
25
+