Креш в синглтоне Мейерса
От: Станислав Артемкин  
Дата: 22.11.07 11:45
Оценка: 13 (5)
Всем привет,

Возможно будет полезно. Следующая имплементация падает в релизной версии, скомпилированной MSVC++. Это дефект оптимизатора MSVC++.

Foo.h
----------
class Foo
{
public:
   static Foo& GetInstance()
   {
      static Foo instance;
      return instance;
   }
};


Исправлял уже 2 раза в нашем проекте.

Чтобы исправить надо перенести имплементацию метода GetInstance() в cpp-шник. Чтобы понять почему падает, добавьте счетчик созданных объектов в Foo и подивитесь

Кое какая информация есть здесь:
http://www.codeproject.com/useritems/VC2003MeyersSingletonBug.asp
Стас
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.