クラスでの代入では、二分探索木で行っているいくつかの操作に関して、C++98 で json-c を使用して json オブジェクトを構築することになっています。
このオブジェクトは、このコードで二分探索木に対して行う操作を記述する小さなオブジェクトで構成されています。ただし、より大きなオブジェクトにオブジェクトを追加すると、場所が大きく変化するセグメンテーション違反が発生します。3回の手術から40回の手術までのどこでも発生する可能性があり、私は非常に混乱しています.
次のコードをコメントアウトすると、プログラムは最初から最後まで完全に正常に実行され、これが問題の根本にあると思います。
これは、コードで使用されるいくつかの json_object* の宣言です。
bigArr = json_object_new_array();
Assignment6Output = json_object_new_object();
opCount = 1;
これは、セグメンテーション違反を引き起こしていると思われる実際のコードです。
json_object *jOp1 = json_object_new_object();
json_object *jAdd = json_object_new_string("add");
json_object *jMovieAdd = json_object_new_string(name.c_str());
json_object_object_add(jOp1, "operation", jAdd);
json_object_object_add(jOp1, "parameter", jMovieAdd);
json_object_array_add(bigArr, jMovieAdd);
json_object_object_add(jOp1, "output", bigArr);
string counter = static_cast<ostringstream*>( &(ostringstream() << opCount) )->str();
json_object_object_add(Assignment6Output, counter.c_str(), jOp1);
ここで、'name' はノード追加関数に渡される文字列です。
文字列カウンターは int から文字列への変換であり、発生した操作の数のカウンターです。
誰かが私を正しい方向に向けるのを手伝ってくれたら、とてもうれしいです。