如果删除字符串引用,python是否释放内存?

2024-06-24 12:18:30 发布

您现在位置:Python中文网/ 问答频道 /正文

Python将为int value保留空间,即使int value已被删除,如下所示:

age = 9999
del age

存储变量age的内存将被用来存储其他int值,因此,这个内存永远不会调用free函数,但我不知道string object是否使用相同的策略来管理内存?我的意思是字符串的内存分配永远不会被释放。在

为什么python永远不会为int object释放内存,请阅读以下博客: http://www.laurentluce.com/posts/python-integer-objects-implementation/

python will manage a free_list(python-2.7.3 source code:intobject.c line:45) to hold every memory alloc for a int object and will never dealloc it


Tags: 函数内存字符串freehttpagestringobject
2条回答

Python为您管理所有内存。如果一个值被名称引用,它将保留在内存中。一旦某个值不再被任何名称引用,解释器就可以自由地回收内存。你不用担心这个。在

我不明白你的例子,或者你为什么认为“年龄”使用的记忆会被重复使用。请记住,Python名称不同于C变量:它们不代表分配的内存。它们是可以引用值的标签。在

如果您查看python字符串实现,您会发现releavent行:

op = (PyStringObject *)PyObject_MALLOC(sizeof(PyStringObject) + size);

这表明字符串是使用python的malloc简单地分配的。它们不像整数那样使用池,因为python字符串对象的大小取决于字符串的长度。所以不能像对待整数那样使用池。在

参见:http://www6.uniovi.es/python/dev/src/c/html/stringobject_8c-source.html

相关问题 更多 >