Der int-Typ ist ein unveränderlicher Typ. Daher kann der einmal im Speicher gespeicherte Wert nicht geändert werden.
Wenn die Werte gleich sind, z. B. wenn mehrere Variablen vorhanden sind, denen 1 zugewiesen ist, beziehen sich alle diese Variablen nur auf einen Speicher, in dem 1 gespeichert ist. Wird Speicher gelöscht, auf den nicht mehr von Variablen verwiesen wird? (Untersuchung erforderlich) (Wird es wie ein schneller Referenzzähler sein?)
qiita.rb
>>> int1 = 1
>>> int2 = 1
>>> print(id(int1), id(int2))#Ausgangsreferenzspeicher-ID
4383344848 4383344848
>>> int2 = 3
>>> print(id(int1), id(int2))
4383344848 4383344912
>>> int2 = 1
>>> print(id(int1), id(int2))
4383344848 4383344848
>>> intList = [1,2,3,4,5]
>>> print(id(intList[0])) #Index zum Speichern 1
4383344848
>>> print(id(intList[2])) #"3"Referenzspeicher-ID
4383344912 #Ich habe es gerade int2 zugewiesen"3"Es ist das gleiche wie die ID von.(Die Anzahl der Referenzvariablen für 3 ist Null geworden, aber ich frage mich, ob der Speicher sofort bereinigt wird.)
Nachtrag 2020/10/04:
Wird Speicher gelöscht, auf den nicht mehr von Variablen verwiesen wird? (Untersuchung erforderlich) (Wird es wie ein schneller Referenzzähler sein?) Es ist dasselbe wie die ID von "3", die zuvor int2 zugewiesen wurde. (Die Anzahl der Referenzvariablen für 3 war Null, aber ich frage mich, ob der Speicher sofort bereinigt wird.)
Sie haben die obige Antwort im Kommentarbereich kommentiert. Vielen Dank, dass Sie @shiracamus.
Recommended Posts