0

我在一个资源受限的基于 ARM 的 ThreadX 平台上运行这个程序。该代码是使用 GCC g++ 编译器构建的。我看到一个奇怪的崩溃,我想了解更多。

我有一个类,它的成员是一个字符串。我看到当我将对象设为全局时程序崩溃(下面的案例 1)。它在我尝试查找字符串对象的长度的打印语句中崩溃。但是,当我创建一个本地对象(下面的案例 2)时,程序不会崩溃。当我使用“新”创建对象时,它不会崩溃(案例 3)。我大致了解可能出了什么问题(构造函数调用没有发生?全局对象很棘手等)。我想了解引擎盖下可能出了什么问题。

class A
{

    public:
        void printS()
        {
            printf(" string sz = %d \r\n", s.size());
        };
        string s;

};

情况1:

A a;
void main()
{
    /* crashes inside the function prints while accessing the string s */
    a.printS();
}

案例二:

void main()
{
    A a;  
    a.printS(); //works
}

案例3:

A* a;
void main()
{   a = new A();
    a->printS(); //works
}
4

1 回答 1

0

这两种情况都有效,您只是打错了。

print instead of **printf**
于 2020-01-24T01:45:51.537 回答