У меня есть свой Boost Test Runner, где я передаю аргументы unit_test_main
как это:
char *myargs[] = {"", "--log_level=test_suite", "report_level=detailed", "output_format=xml", "--run_test=my_manual_test_suite1,my_manual_test_suite2"};
Наборы тестов подобраны, тесты выполнены. Однако в конце выполнения моей программы я получаю повреждение памяти. Есть ли причина, почему?
Мой тестовый прогон представляет собой один файл cpp, в котором находятся все тестовые случаи, а также unit_test_main
,
РЕДАКТИРОВАТЬ: я забыл добавить, что нет коррупции, если я передаю аргументы извне моей программы. Это странно
Можете поделиться еще кодом? Я хочу увидеть разницу, которую вы сделали, передавая аргументы локально и передавая их извне программы.
РЕДАКТИРОВАТЬ:
Хорошо, я думаю, у меня проблема. Когда вы передаете аргументы извне, они выкладываются последовательно. Например, допустим, вы звоните test.exe --log_level=all --run_test=mt1
, Скажем, адрес первого аргумента 0x10000. Тогда адрес следующего арг --log_level=all
начинается в 0x10009 и так далее. Когда вы сами записываете argv, это не так. Поэтому я предлагаю последовательно изложить аргументы, как указано выше, и попробовать.
Других решений пока нет …