gpt4 book ai didi

python - 在python中写入内存中的特定地址

转载 作者:太空狗 更新时间:2023-10-30 00:05:50 25 4
gpt4 key购买 nike

我知道 python 是一种高级语言,它自己管理内存分配等。与其他语言(如 c、c++ 等)不同,用户/开发人员不需要担心太多。

但是有没有办法让我们可以在 python 中的特定内存地址中写入一些值

我知道 id() 如果十六进制类型转换可以给出十六进制位置,但我们如何在一个位置写入。

最佳答案

首先,正如评论中所指出的,这是一个很好的问题,为什么您会想要做这样的事情。您应该仔细考虑是否有其他选择。

话虽如此,通过扩展来实现这一点还是很容易的。 Python 本身的构建使其很容易 extend it via C or C++ .通过 Cython 更容易做到这一点.

以下草图描述了如何构建一个接受整数 pv 的 Python 可调用函数。它将值v写入数值地址为p的内存地址。

注意 请再次注意,这只是一个技术答案。整个操作及其部分都值得怀疑,您应该考虑您要实现的目标。

创建文件modify.h,内容为:

void modify(int p, int v);

创建文件modify.c,内容为:

#include "modify.h"

void modify(int p, int v)
{
*(int *)(p) = v;
}

创建文件modify.pyx,内容为:

cdef extern from "modify.h"
void modify(int p, int v)

def py_modify(p, v):
modify(p, v)

最后,创建setup.py,内容为:

from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext

ext_modules = [Extension(
name="modify",
sources=["modify.pyx", "modify.c"])]

setup(
name = 'modify',
cmdclass = {'build_ext': build_ext},
ext_modules = ext_modules,
# ext_modules = cythonize(ext_modules) ? not in 0.14.1
# version=
# description=
# author=
# author_email=
)

我希望您仅将此答案用于学习目的。

关于python - 在python中写入内存中的特定地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38696575/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com