Внутри статической функции-члена одноэлементного класса вместо использования getInstance () я использовал переменную-член статического указателя напрямую.
Я не проверял null, и он был нулевым во время выполнения, следовательно, исключение нулевого указателя.
PC lint не уведомил меня об этом. Обычно это уведомляет меня как предупреждение Prio 2: возможно использование нулевого указателя.
Почему он не уведомил меня?
class stClass
{
int m_value;
static stClass *s_instance;
stClass(int v = 0)
{
m_value = v;
}
public:
int get_value()
{
return m_value;
}
void set_value(int v)
{
m_value = v;
}
static stClass *getInstance()
{
if (!s_instance)
s_instance = new stClass;
return s_instance;
}
static void intentFunction()
{
printf("%d", s_instance->getValue()); // Null pointer exception here...
}
};
Задача ещё не решена.