ЕДИНИЦЫ ИЗМЕННЫЕ СУДЬЯ С ДВОЙСТВОМ БЕСПЛАТНОC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 ЕДИНИЦЫ ИЗМЕННЫЕ СУДЬЯ С ДВОЙСТВОМ БЕСПЛАТНО

Сообщение Anonymous »

Я запускаю модульные тесты с использованием gtest (1.16) и jsoncpp (1.9.5) и время от времени (иногда 2-3 раза подряд, иногда после успеха 40 раз подряд), один модульный тест не удается/сбой и я не могу объяснить, почему. < /p>
Вот код, в котором он не сбои: < /p>

Код: Выделить всё

    std::string buffer;
ASSERT_TRUE(converter.toJson(buffer));

Json::Value actualRoot;
Json::CharReaderBuilder builder;
std::istringstream istream(buffer);
Json::String errs;
ASSERT_TRUE(Json::parseFromStream(builder, istream, &actualRoot, &errs));
< /code>
output: < /p>
Value of: Json::parseFromStream(builder, istream, &actualRoot, &errs)
Actual: false
Expected: true

free(): double free detected in tcache 2
до того, как я использовал json :: reader , который устарел, и я также получил бесплатно (): двойное бесплатное обнаружено в Tcache 2 время от времени, но Assert никогда не был подтвержден, когда он разбился раньше ... При добавлении печати сразу после Assert он никогда не печатается при сбое теста. был 100% правильный. Что меня действительно сбивает с толку, когда я печатаю значение буфера, я всегда получаю {"cols": 3, "Матрица": [[1, 2, 3], [4, 5, 6], [7, 8, 9]], "Rows": 3} . И при копировании этого значения (после сбоя) и буфера с жестким кодированием с этим значением оно, похоже, не сбоя. Запуск тестов в Windows. Я нашел некоторую проблему на GitHub в jsoncpp с некоторой двойной бесплатной ошибкой, но это исправлено в версии, которую я использую. как Free (): неверный указатель , но намного реже. В производстве приложение никогда не разбилось из -за проблем с Free ().
Googletest не установлен, исходный код интегрирован с Cmake.

Подробнее здесь: https://stackoverflow.com/questions/794 ... om-jsoncpp
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»