P_zoe 2021-08-12 10:25 采纳率: 0%
浏览 217

python获取内存地址的值的问题

Python调用C动态库,回调函数中的参数是c_void_p类型时,如果想取得c_void_p参数指向的地址的值,该怎么做?
c回调

typedef void (*callbakc) (void * buf);

void (*callbakc) (void * buf)
{
    int *ptr = new int(0);
    buf = ptr;
}

python中的定义

def callback(buf):
    # 此处想通过buf得到值0。尝试过string_at,返回的是str类型的乱码。
    # string = string_at(buf) 

CALLBACKFUNC = CFUNCTYPE(None,c_void_p)
call = CALLBACKFUNC(callback)

如上,在C中创建了一个指向值是0的指针ptr,python的回调函数中,buf返回的是int类型,其值是ptr的内存地址,那么怎么通过这个内存地址得到值0呢?

  • 写回答

1条回答 默认 最新

  • 尘世镜花恋 2021-08-12 10:56
    关注

    python获取内存地址的值方法也许可以更简单

    import ctypes
    print(ctypes.cast(id(a), ctypes.py_object).value)
    #a是变量或者其他对象,id()函数获取这个对象的内存地址,调用cytypes.cast获取对应内存地址的值
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 8月12日

悬赏问题

  • ¥15 系统 24h2 专业工作站版,浏览文件夹的图库,视频,图片之类的怎样删除?
  • ¥15 怎么把512还原为520格式
  • ¥15 MATLAB的动态模态分解出现错误,以CFX非定常模拟结果为快照
  • ¥15 求高通平台Softsim调试经验
  • ¥15 canal如何实现将mysql多张表(月表)采集入库到目标表中(一张表)?
  • ¥15 wpf ScrollViewer实现冻结左侧宽度w范围内的视图
  • ¥15 栅极驱动低侧烧毁MOSFET
  • ¥30 写segy数据时出错3
  • ¥100 linux下qt运行QCefView demo报错
  • ¥50 F1C100S下的红外解码IR_RX驱动问题