normalement oui. mais il peut y avoir des blagues
au blair:
- évite d'avoir des runtimes différents (compiler tout le monde avec le même compilo et le même runtime DLL, pas statique sinon tu auras des heap différents)
- si jamais ça passe par un heap différent par instance de DLL, normalement définir tes propres operator new/delete pour wrapper vers l'exe devrait te permettre de mixer des new/delete d'objets entre exe et instances de dll.
genre un truc comme ça:
des pointeurs sur les new/delete a utiliser coté DLL:
static void *(*GlobalNew)(size_t) = NULL;
static void (*GlobalDelete)(void *) = NULL;
void *operator new(size_t Size) { return( (*GlobalNew)(sz) ); }
void *operator new[](size_t Size) { return( (*GlobalNew)(sz) ); }
void operator delete(void *Ptr) { (*GlobalDelete)(m); }
void operator delete[](void *Ptr) { (*GlobalDelete)(m); }
et genre a l'initialisation de ta DLL, tu t'arrange pour initialiser GlobalNew et GlobalDelete au new/delete d'allocation de l'exe. (comme ça tu est sûr de passer par le heap process)
mais je pense (mais pas sûr), que si tu lies l'exe et tes dlls au runtime dll, ça utilise le même heap (mais ça dépends de l'implémentation du runtime je dirais). donc je dis peut être des conneries, donc c'est comme si j'avais rien dit
Message édité par bjone le 26-01-2009 à 17:00:17