为什么要在堆栈上分配Python字符串?


Answers:


7

该可视化工具未在堆栈上显示字符串数据。它在调用堆栈中显示了对堆数据的本地引用。这与Java非常相似,在Java中,String引用是指向String堆上实际对象的局部变量。

可视化工具可以随意进行任何形式的表示简化。这并不意味着在任何给定的Python实现中都“在堆栈上分配了Python字符串”。


1

格雷格在回答中说过,字符串是在堆上分配的。

可视化工具选择在“框架”部分显示一些对象,这对我来说似乎是错误的。幸运的是,它对学习python的人几乎没有影响,因为受影响的对象(int,string)是不可变的。因此,关于影响的推理仍然是可能的。

但是,当您执行以下操作时,会给人一种错误的印象:字符串在内存中重复:

x = "hello"
y = x
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.