我的问题是:如何在python中读取内存地址的内容? 例: ptr = id(7) 我想读一下ptr指出的内存内容。 感谢。
答案 0 :(得分:35)
看看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'
答案 1 :(得分:8)
在Python中,除非您正在与C应用程序连接,否则通常不会使用指针来访问内存。如果这是您所需要的,请查看访问者功能的ctypes module。
答案 2 :(得分:4)
“我想读取ptr指向的内存内容”
用C编写代码。使用Python中的代码。 http://docs.python.org/extending/extending.html
答案 3 :(得分:1)
您是否试图“反转”id
以从thing
的结果中获取Python对象id(thing)
?我甚至不知道是否可以这样做,绝对不应该这样做;它会打败垃圾收集并导致内存安全性不足。如果你的程序这样做,这意味着你有效地引用垃圾收集器不知道的东西(id
数字)是引用,所以它可以释放你仍在使用的对象(取决于在其余的计划)。
如果你试图从你从C扩展名返回的指针中读取原始内存,那么其他答案可能对你有帮助。
答案 4 :(得分:0)
如果您尝试访问较大的二进制文件(例如图像和视频),而不必永远需要它们在内存中,请考虑使用[weakref][1]