在python中访问内存地址

我的问题是:如何读取python中的内存地址的内容? 例如:ptr = id(7)我想读取由ptr指向的内存的内容。 谢谢。

看看ctypes.string_at 。 这是一个例子。 它转储Python 3整数的原始数据结构。 希望你只是做这个练习。 没有理由用纯Python做到这一点。

from ctypes import string_at from sys import getsizeof from binascii import hexlify a = 0x7fff print(hexlify(string_at(id(a), getsizeof(a)))) 

产量

 b'02000000d8191e1e01000000ff7f' 

在Python中,除非与C应用程序连接,否则通常不使用指针来访问内存。 如果这是你所需要的,看看访问器函数的ctypes模块 。

“我想读取由ptr指向的内存的内容”

用C编写代码使用Python中的代码。 http://docs.python.org/extending/extending.html

你是否想要“反转” idid(thing)的结果中获得Python对象的thing ? 我甚至不知道这是否可以做到,绝对不应该这样做。 它会打败垃圾收集,导致记忆安全性的不足。 如果你的程序这样做,这意味着你有效地引用了垃圾收集器不知道的东西( id号)是引用,所以它可以释放你仍在使用的对象(取决于程序其余部分发生了什么)。

如果你正试图从你从C扩展中返回的指针读取原始内存,那么其他答案可能对你有帮助。