Haben Delphi Klasse Vars haben sich die globalen oder lokalen Speicher eingefädelt?
-
09-06-2019 - |
Frage
Meine Vermutung ist, dass Klassenvariablen ( „class var“) im Speicher wirklich global ist (das heißt, eine Instanz für die gesamte Anwendung).
Aber ich frage mich, ob dies der Fall ist, oder ob sie Thread im Speicher (zB ähnlich einen „threadvar“.) - einmal Instanz pro Thread
Wer weiß?
Edit: geändert "scope" auf "Speicher", da dies in der Tat ist die korrekte Terminologie und was ich bin nach (Dank Barry)
Lösung
Ja, Klassenvariablen sind global scoped. Werfen Sie einen Blick in der RTL-Quelle für Details, wie threadvars umgesetzt werden. Unter Win32 kann jeder Thread einen Speicherblock automatisch auf Thread-Erzeugung, die ihr zugewiesen sind. Dieser zusätzliche Datenbereich ist, was verwendet wird Ihren threadvars enthält.
Andere Tipps
Klassenvariablen entsprechend ihrer Attribute Sichtbarkeit Mitglied scoped sind, und haben Global Storage, nicht lagerungs fädeln.
Scope ist eine syntaktische Konzept, und bezieht sich auf das, was Identifikatoren sind sichtbar, von wo aus. Es ist die Speicherung der Variablen, die hier von Belang ist.
Klassenvariablen sind wie Klassen. Global und einzigartig für die Anwendung