找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 1942|回复: 1

[求助] python for循环中创建共享内存数组为什么分配地址一样

0

主题

1

帖子

1

积分

贫民

积分
1
myliangtao 发表于 2018-10-15 11:45:37 | 显示全部楼层 |阅读模式
本帖最后由 myliangtao 于 2018-10-15 11:53 编辑

QQ图片20181015113420.png
如图,每次对象不同,但是地址出现了循环重用,不明白为什么
但是如果把共享内存放入数组则不会出现该问题,
QQ图片20181015114430.png
如下图,请大牛解释一下为什么
回复

使用道具 举报

0

主题

1

帖子

1

积分

贫民

积分
1
myliangtao  楼主| 发表于 2018-10-15 17:04:08 | 显示全部楼层
自己回答一下吧:
应该是for循环中每次分配共享内存后,前一次分配的共享内存对象没有引用,被垃圾回收自动释放,所以再次分配会创建新的对象,但是内存地址会重复利用,因此又会再次分配到同一个地址。
因此在创建共享内存后,传递给子进程后,主进程中改对象不在引用会被释放,然后再次被创建,导致多个不同子进程访问同一共享内存地址;
采用数组存储后,改共享内存对象不会被垃圾回收,共享内存地址也就不会被重复分配;
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表