如何在python中获取垃圾值

时间:2016-01-23 00:07:30

标签: python c++ c garbage-collection

这个问题可能没有任何实际价值,这只是出于好奇。 在C / C ++中声明如下变量:

int c;

变量c会有一些垃圾值。 根据我的理解,python没有C / C ++中的变量,但它具有对象的名称绑定。因此,根据我的说法,你无法获得垃圾,因为你总是首先创建对象,然后为它分配一个标签。

垃圾值实际上就是存储在位置变量引用的任何内容。但是,我想知道是否有某种方法可以在python中获取垃圾值。换句话说,有一些方法可以访问内存位置而无需先进行初始化。在我看来,它应该是不可能的,如果这是设计的,我会很感激。但我只是好奇。

我仍在学习python和C ++并且不是专家所以请原谅我,如果这是一个愚蠢的问题。

1 个答案:

答案 0 :(得分:1)

这通常取决于您使用的解释器。例如,使用CPython,您可以执行this answer之类的操作,或者基本上使用this other answer建议的C库。

  

访问内存位置而不先进行初始化

可以用这样的东西来完成,

from ctypes import string_at
from sys import getsizeof
from binascii import hexlify
# create a dummy object, just to get a memory location
a = 0x7fff
# and use it as a pivoting point to access other locations
offset = 100
print(hexlify(string_at(id(a)+offset, getsizeof(a))))

毋庸置疑,这种事情有其风险,但这是一个有趣的实验。