在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
你是否想要“反转” id
从id(thing)
的结果中获得Python对象的thing
? 我甚至不知道这是否可以做到,绝对不应该这样做。 它会打败垃圾收集,导致记忆安全性的不足。 如果你的程序这样做,这意味着你有效地引用了垃圾收集器不知道的东西( id
号)是引用,所以它可以释放你仍在使用的对象(取决于程序其余部分发生了什么)。
如果你正试图从你从C扩展中返回的指针读取原始内存,那么其他答案可能对你有帮助。