Haben Delphi Klasse Vars haben sich die globalen oder lokalen Speicher eingefädelt?

StackOverflow https://stackoverflow.com/questions/82113

  •  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)

War es hilfreich?

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top