Кажется, что проблема решена, если та же самая инструкция выполняется в начале первого конструктора объекта-члена, который вызывается перед контейнером первого класса.
Давайте возьмем такой класс:
class A
{
object B;
object C;
object D;
// ...
public:
A(void);
// ...
};
A::A()
{
Stop_WatchDog();
// ...
}
Код, подобный приведенному ниже, воспроизведет проблему:
A myContainerObject;
int main()
{
Stop_WatchDog();
}
Если B
не изменено на:
class B
{
// ...
public:
B(void);
// ...
}
B::B()
{
Stop_WatchDog();
// ...
}
Итак, в общем случае сторожевой таймердолжен быть остановлен в начале конструктора первого члена инициализированного глобальным объектом программы.