我在一个资源受限的基于 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
}