Bonjour,
j'ai un soucis et je crois savoir d'où il vient. Je voudrais confirmation.
J'ai, dans une DLL :
Puis une application qui appelle createInstance() et qui interagit avec l'interface Base.
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; }
Pour plus de comodité, j'avais écrit dans cette DLL partout où j'avais besoin de mon instance :
Et je m'en servais pour interroger des propriétés de l'instance.
Code : Sélectionner tout - Visualiser dans une fenêtre à part extern Derivee * uniqueInstance;
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 ?
Partager