statischer Speicher und Dlls



  • Hi

    ich hab da mal ne frage 🙂 Also wenn ich eine Klasse aus einer DLL exportiere und diese Klasse statische attribute hat werden diese dann für jeden Client neu angelegt oder teilt sich jeder Client diese statischen daten ???

    Z.B. definiere ich in DLL_1 eine Klasse mit statischen daten und DLL_2 + EXE linken DLL_1, heisst das dass DLL_2 und die EXE jeweils eine instanz der statischen daten haben oder teilen sie gemeinsam Zugriff auf die statischen daten ??????

    Danke



  • die daten werden nicht geteilt, sie werden immer einzeln erzeugt. und zwar jedesmal wenn die dll + klasse neu geladen wird, außer du möchtest das explizit. memory mapped files oda so...

    alles andere wäre ja auch horror 🙂 stell dir mal die stanard windows dll's vor, die all ihr statischen daten teilen müssten *aaaahhhh*

    MfG Radiation



  • Natürlich Teilen sich in Deinem Fall die DLL_2 und die EXE die selben statischen Daten der DLL_1!

    Die Regel ist eigentlich ganz simpel:
    Jeder Prozess hat die statischen und globalen Datenb nur einmal!
    Und jede DLL wird nur einmal pro Prozess geladen.

    Fazit: DLL_2 und EXE verwenden die gleiche DLL_1 und somit verwenden sie die gleichen Daten.



  • *antwort zurückzieh*

    hab die frage nochmal durchgelesen und gemerkt dass ich die doch falsch verstanden hab 🙂

    sry dafür (sollte den petzold mal endlich zu ende lesen :D)

    wie ich mir das gedacht hatte, hätte es gestimmt 🙄

    MfG Radiation


Anmelden zum Antworten