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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (266)

我知道python是一种高级语言,并且管理内存分配等自己的用户/开发人员不需要担心其他语言,如c,c ++等。

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

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

提问于
用户回答回答于

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

话虽如此,通过扩展很容易做到这一点。Python本身是经过构建的,因此很容易通过C或C ++扩展它。通过Cython更容易做到这一点

下面简要介绍如何使用整数p和构建Python可调用函数v。它会将值写入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)?不在0.14.1#version =#description = #author = #author_email =)

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

用户回答回答于

Python本身不包含允许程序员直接访问内存的任何工具。这意味着可悲的是(或者很高兴,取决于你的观点)你的问题的答案是“不”。

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励