DLL und static?
-
Hey,
wenn ich eine DLL code, in der eine static variable verwendet wird, wie lange lebt diese variabele dann?
Sagen wir die dll hateine öffentliche funktion "dummy()" diese funktion enhätl eine static long Pos variable... wie wird die static variable initialisiert?wo wird eigentlich eine static varaible angelegt aufm heap nehm ich an? und die lebensdauer ist von der Programmlebensdauer aqvivalent denke ich, aber wie ist es bei ner dll?
-
Bei einer DLL bekommt jeder Prozess seine eigenen static-Variablen. Die Variablen leben also genau so lange wie der Prozess, der die DLL geladen hat. Dass ein und dieselbe DLL von mehreren Prozessen gleichzeitig geladen werden kann, stoert dabei genausowenig wie die Tatsache, dass du ein und dasselbe Programm mehrmals gleichzeitig ausfuehren kannst. In beiden Faellen kollidieren static-Variablen nicht.
(Ausnahme: Du sagst dem Linker, dass bestimmte Variablen prozessuebergreifend sein sollen.)
edit: Das hat nur irgendwie nichts mit ANSI C zu tun, oder?
-
naja ich progammiere grad eine kleines programmänchen in C und verwendet static variable deswegen "ANSI C" ! muss ich die static variabel initialisieren, oder ist die automatisch auf 0 beim programmstart ?