Bonjour,
j'ai un soucis et je crois savoir d'où il vient. Je voudrais confirmation.

J'ai, dans une DLL :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
class Base;
 
class Derivee : public Base
{
};
 
Derivee * uniqueInstance = NULL;
 
Base * createInstance()
{
  uniqueInstance = new Derivee();
  return uniqueInstance;
}
Puis une application qui appelle createInstance() et qui interagit avec l'interface Base.

Pour plus de comodité, j'avais écrit dans cette DLL partout où j'avais besoin de mon instance :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
extern Derivee * uniqueInstance;
Et je m'en servais pour interroger des propriétés de l'instance.

Seulement voila, l'application peut charger plusieurs fois ma DLL et j'ai l'impression que les pointeurs extern des deux DLL pointent vers le même objet. Alors que deux new ont été appellés.

Donc ma question : un pointeur extern dans une DLL est-il partagé pour toute les DLL de l'appli ?