更新时间:2018-01-05 来源:黑马程序员 浏览量:
I. 研究来由
在屏幕共享项目里需要用到共享内存,但是之前对QSharedMemory实在不熟悉,因此在Mac上使用了mmap,而windows系统使用了CreateFileMapping。既然QT提供了跨平台共享内存机制,那么还是研究研究吧。
II. 注意事项
QSharedMemory虽然是跨平台的进程间内存共享方案,但是在不同的平台也是有不同的行为的,主要的区别是:
· windows平台下,所有的进程退出后,即使进程crash,共享内存对象也会被内核销毁。
· unix平台下,如果有进程crash,导致没有调用到QSharedMemory的析构函数的话,共享内存对象不会被内核销毁。
以上两句是看QT文档所得,英文水平有限,不一定正确,请验证
setNativeKey这种函数,会导致lock失败,这意味着QT的共享机制被破坏了,所以还是不用了吧。
III. 演示代码

本文版权归黑马程序员C/C++学院所有,欢迎转载,转载请注明作者出处。谢谢!
作者:黑马程序员C/C++培训学院
毕业16个工作日,平均薪资13180元,就业率100%,广州黑马AI智能应用开发(Java)学科20250529班
2026-03-06毕业32个工作日,平均薪资11147元,就业率95%,广州黑马AI智能应用开发(Java)学科20250326班
2026-03-05黑马程序员2025全国就业数据发布:全学科平均就业率92.07%,AI开发类就业平均薪资达11869.67元。
2026-03-05黑马全国校区齐开班!场面太太太壮观了!
2026-03-03AI智能应用开发课程紧贴企业刚需,全程高效学习,直达中高级软件开发水平
2026-02-28风口正劲!黑马程序员又一AI智能应用开发班毕业当天100%就业!
2026-02-27