Я запускаю эту программу на платформе ThreadX с ограниченными ресурсами ARM. Код построен с использованием компилятора G CC g ++. Я вижу странный cra sh, который я хотел бы понять больше.
У меня есть класс, в котором есть член, который является строкой. Я вижу, что программа падает, когда я делаю объект глобальным (Случай 1 ниже). Сбой в операторе print, где я пытаюсь найти длину строкового объекта. Но когда я создаю локальный объект (пример 2 ниже), программа не создает sh. Когда я создаю объект, используя 'new', он не создает sh (случай 3). У меня есть грубое представление о том, что может идти не так (не вызывается конструктор? Глобальные объекты хитры и т. Д. c.). Я хотел бы понять, что может быть не так под капотом.
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();
}
Дело 2:
void main()
{
A a;
a.printS(); //works
}
Дело 3:
A* a;
void main()
{ a = new A();
a->printS(); //works
}