在Python中访问内存地址

43 投票
6 回答
69151 浏览
提问于 2025-04-17 06:57

我的问题是:我怎么能在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语言本身所保证的。

撰写回答