我的问题是:如何在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 module。
“我想读取ptr指向的内存的内容”
在C中编写代码。使用Python中的代码。 http://docs.python.org/extending/extending.html
您是否正在尝试“反转” id
以从thing
的结果中获取Python对象id(thing)
?我什至不知道是否可以做到,而且绝对不应该这样做。它会破坏垃圾收集并导致内存安全性不足。如果您的程序这样做,则意味着您有效地引用了垃圾收集器不知道的东西(id
数字),因此它可以释放您仍在使用的对象(取决于其余部分的处理方式)该程序)。
如果您尝试从C扩展之类返回的指针中读取原始内存,那么其他答案可能会对您有所帮助。
[如果您尝试访问较大的二进制文件,例如图像和视频,而不必永远需要它们在内存中,请考虑使用[weakref][1]