我有自己的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串起来时,情况就不是这样了。因此,我的建议是按照上面的顺序放置参数,并尝试一下。