在Python中访问内存地址
我的问题是:我怎么能在Python中读取一个内存地址的内容?
举个例子:
ptr = id(7)
我想读取ptr指向的内存内容。
谢谢。
6 个回答
6
“我想读取指针ptr指向的内存内容。”
用C语言写代码。使用Python中的代码。http://docs.python.org/extending/extending.html
10
在Python中,通常情况下你不需要使用指针来访问内存,除非你是在和一个C语言的应用程序进行交互。如果你确实需要这样做,可以看看ctypes模块,里面有一些可以用来访问内存的函数。
52
看看这个 ctypes.string_at。这里有个例子。它会显示一个CPython整数的原始数据结构。
from ctypes import string_at
from sys import getsizeof
a = 0x7fff
print(string_at(id(a),getsizeof(a)).hex())
输出结果:
0200000000000000d00fbeaafe7f00000100000000000000ff7f0000
需要注意的是,这个方法在CPython实现中有效,因为 id()
函数恰好返回了一个Python对象在虚拟内存中的地址,但这并不是Python语言本身所保证的。