Comment getInstance ()?

Récent que j'ai lu un code C++ en utilisant largement suivantes méthode getInstance ():

class S
{
    private:
        int some_int = 0;
    public:
        static S& getInstance()
        {
            static S instance; / (*) /
            return instance;
        }
};

De la façon dont ce fragment de code utilisé, j'ai appris la getInstance() fonctionne comme return this, de retourner l'adresse(ou une référence) de l'instance de class S. Mais je n'ai pas compris.

1) où la variable statique S défini dans la ligne(*) alloués en mémoire? Et pourquoi il peut fonctionner comme return this?

2) s'il existe plus qu'une seule instance de class S, dont la référence sera retourné?

OriginalL'auteur qweruiop | 2013-09-25