C++ 用于增强UTF单元测试的命令行参数

C++ 用于增强UTF单元测试的命令行参数,c++,memory-corruption,boost-unit-test-framework,C++,Memory Corruption,Boost Unit Test Framework,我有自己的Boost Test Runner,我将参数传递给unit\u Test\u main,如下所示: char *myargs[] = {"", "--log_level=test_suite", "report_level=detailed", "output_format=xml", "--run_test=my_manual_test_suite1,my_manual_test_suite2"}; 选取测试套件,执行测试用例。然而,在我的程序执行结束时,我得到了内存损坏。有什么原

我有自己的Boost Test Runner,我将参数传递给
unit\u Test\u main
,如下所示:

char *myargs[] = {"", "--log_level=test_suite", "report_level=detailed", "output_format=xml", "--run_test=my_manual_test_suite1,my_manual_test_suite2"};
选取测试套件,执行测试用例。然而,在我的程序执行结束时,我得到了内存损坏。有什么原因吗

我的测试运行程序是一个cpp文件,其中包含所有测试用例和
单元测试\u main


编辑:我忘了添加,如果我从程序外部传递参数,则没有损坏。这很奇怪。

你能再分享一些代码吗?我想看看您在本地传递参数与从程序外部传递参数之间的区别

编辑:


好吧,我想我有问题了。当您从外部传入参数时,它们是按顺序排列的。例如,假设您调用
test.exe--log\u level=all--run\u test=mt1
。例如,第一个arg的地址是0x10000。然后,下一个arg
--log_level=all
的地址从0x100009开始,依此类推。当您自己连接argv时,情况并非如此。因此,我的建议是按上述顺序排列参数并尝试一下。

当它们来自外部时,是这样的:
int main(int argc,char**argv)
我将相同的argv传递给
单元测试\u main
,然后没有发生内存损坏。但是,如果我将自己的argv构造为
char**myargv={…}内存已损坏。我很乐意发布整个代码示例,但不知道如何发布。感谢您的及时回复!好吧,我想我有问题了。当您从外部传入参数时,它们是按顺序排列的。例如,假设您调用
test.exe--log\u level=all--run\u test=mt1
。例如,第一个arg的地址是0x10000。然后,下一个arg
--log_level=all
的地址从0x100009开始,依此类推。当您自己连接argv时,情况并非如此。因此,我的建议是按上述顺序排列论点,并尝试一下。谢谢。这个解决方案奏效了。当我传递参数并按顺序排列时,没有内存损坏。我将此标记为答案。