This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320F28335: Printf函数跑飞的问题

Part Number: TMS320F28335


自己写了一个测试用例的基类,主要是打印那个子类测试用例没有通过测试

void TestCase::Run()
{
    if(!DoTest())
        printf("%s %s\n", name, "failed");
    else
        printf("%s %s\n", name, "Succeed");

}

我现在写了四个子类,主程序例把每个子类运行一遍:

int main(void)
{
    RunTests();
    return 0;
}

void RunTests()
{
    TestCase *t = new TestFrequency();
    t->Run();
    delete t;

    t = new TestRadio_MulticouplerState();
    t->Run();
    delete t;

    t = new TestQueue();
    t->Run();
    delete t;

    t = new TestMulticouplerFrameValidtionStrategy();
    t->Run();
    delete t;
}

前两个测试用可以正确打印测试结果“XXX test succeed”,运行第三个也就是TestQueue的Run中的printf("%s %s\n", name, "Succeed");这一行时,在按单步运行(F6),发现程序跑飞。如果我run函数里面两个printf都注释掉,则程序可以正常运行不会跑飞。

我在网上找了相关问题,有的说是堆分配不够,所以我在cmd文件开头加了-heap 0x1000,现象还是一样,后来又改成0x2000和0x4000编译都能通过,但是还是在第三次printf跑飞,又问遇到相似问题吗?

ps:我把printf改成puts("succed"),puts("fail")就可以运行了