列表名称和列表元素的内存地址



我知道列表元素是堆中的对象,这些对象在堆栈中有它们的引用。

**x = ['a', 'b', 'c']
print(id(x[0]))             -> 01014518
print(id(x[1]))             -> 01014528
print(id(x[2]))             -> 01014556
print(id(x))                -> 18458914**

列表名称的内存地址在哪里?列表名称地址与元素地址的关系是什么?

对于列表的实现,将使用对其他对象的连续引用数组。Python保留一个指向该数组的指针,数组的长度存储在列表头结构中。当附加或插入项目时,将调整引用数组的大小。

这只是意味着x指向一个地址数组所在的地址,该数组的每个元素指向另一个对象(int、float、list(所在的另一个地址。这就是为什么列表中每个元素的地址都指向另一个对象的原因,该对象可能是list、int、string。。。。。

参考此链接可以更好地解释内存分配

最新更新