fasionchan

fasionchan

🏢  小菜学编程 / Linux后台开发工程师
V2EX 第 477404 号会员,加入于 2020-03-18 16:41:30 +08:00
慕课网专栏《Python源码深度剖析》作者
fasionchan 最近回复了
来关注我的网络协议教程,快写到 IP 了: https://www.yuque.com/coding-fan/network
关于第一、二、三点,可以尝试自行将自定义脚本内容读入、编译、然后执行,得到你想要的 check 方法,不需要依赖 import 机制。具体做法可以参考我写的文章: https://www.imooc.com/read/76/article/1918

关于第四点,二次开发本来就要对系统的安全性负责,做好用户隔离即可。用户隔离要最好做到系统级别的隔离,进程级别的隔离是不够的:如果一个用户执行了关机指令,另一个用户躺着中枪?
228 天前
回复了 IVeverKB 创建的主题 Python 新手 关于 Python 协程的一个问题
协程需要由事件循环驱动,如果主线程执行了事件循环,就没有机会执行外部的 while True,如果执行了 while True,就无法执行事件循环。
收藏~

等我有空将这些话题都整理一下,收录到语雀知识库: https://www.yuque.com/coding-fan/network
@black11black 第一个问题:你应该不是用智能指针,处理方式是对的。delete vector 其实就会执行 clear,所以 clear 不是必须的。

第二个问题,调用 clear 会对每个元素调用析构函数,析构函数函数一般就是用来释放资源的,因此无需逐个删除。如果你的 struct 引用了其他内存资源,例如 new 了什么其他对象,则需要在析构函数中将它 delete 。
@black11black 一样的。如果你通过 new 创建了 c++对象,对象不用后要通过 delete 进行释放。如果通过类似智能指针的东西来管理,则遵守智能指针的约定即可,不用显式释放。
如果你在 c 中申请内存(malloc),那么需要自己做好内存管理,该释放时就要释放(free),不然就是内存泄露。

如果你在 c 中创建 Python 对象,需要通过 Py_INCREF/Py_DECREF 这两个宏维护好引用计数,Python 虚拟机会根据引用计数决定什么时候释放内存。

那么什么时候需要调整引用计数呢?典型的场景包括:对象被添加到容器中,或者对象作为函数结果返回时等等。
如果引用计数维护不当,轻则内存泄露(该减没减),重则内存非法访问(该加没加)。
或许花点时间,停下来思考一下,这样的数据结构设计是否合理,会有更好的想法🤔
我自己的公众号就坚持只放干货,不放广告,但也没什么人关注呀,粉丝每天加一减一……

文章质量我自己觉得还过得去:

为什么要钻研 Python 源码: https://mp.weixin.qq.com/s/3T59Li0W116T-xDRHwjeFg
小菜成长之路,警惕沦为 API 调用侠: https://mp.weixin.qq.com/s/S_daJB8ZDUp4lSVVhlS0Dw
Python 对象模型概述: https://mp.weixin.qq.com/s/jFYMprMoD0fLQ9qLxd2SyQ
揭开 Python 对象的神秘面纱: https://mp.weixin.qq.com/s/yIhVXKM2TbY2zKRtFtURyw
str 对象,统一的 Unicode 字符串: https://mp.weixin.qq.com/s/E7z2yN8V9ac2pUTfgqDg9Q
GIL,束缚 Python 的紧箍圈: https://mp.weixin.qq.com/s/lIkcTuCX5htQcteklCFaZw
手把手教你设计协程库: https://mp.weixin.qq.com/s/MaLMf3HZCYfmzxOY1QfPnw
内存池技术如何优化分配效率: https://mp.weixin.qq.com/s/SRd6r1URibR3ZSulT1GDug
加一条到 80.0.0.1 的主机路由,从正常的上网路劲出去?
关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   932 人在线   最高记录 5497   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 15ms · UTC 22:35 · PVG 06:35 · LAX 15:35 · JFK 18:35
♥ Do have faith in what you're doing.