这个问题可能没有任何实际价值,这只是出于好奇。 在C / C ++中声明如下变量:
int c;
变量c
会有一些垃圾值。
根据我的理解,python没有C / C ++中的变量,但它具有对象的名称绑定。因此,根据我的说法,你无法获得垃圾,因为你总是首先创建对象,然后为它分配一个标签。
垃圾值实际上就是存储在位置变量引用的任何内容。但是,我想知道是否有某种方法可以在python中获取垃圾值。换句话说,有一些方法可以访问内存位置而无需先进行初始化。在我看来,它应该是不可能的,如果这是设计的,我会很感激。但我只是好奇。
我仍在学习python和C ++并且不是专家所以请原谅我,如果这是一个愚蠢的问题。
答案 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))))
毋庸置疑,这种事情有其风险,但这是一个有趣的实验。