共享内存需要释放吗?

csuc20 2006-12-19 02:51:27
几个程序之间公用一个共享内存区,单个程序退出时需要释放共享内存吗?
我原来的操作是每个程序退出之前都释放了的,没什么问题。但是最近调试的时候发现报内存不能为Read的错误,不同之处在于其中有个程序终止了另外一个程序,用TerminateProcess()。请大家帮忙分析下原因。
...全文
1538 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
oyljerry 2006-12-21
  • 打赏
  • 举报
回复
全部都不用了的时候,释放,以免各种resource leak
blastzgd 2006-12-21
  • 打赏
  • 举报
回复
引用计数.
bjtwtx 2006-12-19
  • 打赏
  • 举报
回复
两步都是必须的,这样才能完全释放共享内存
bjtwtx 2006-12-19
  • 打赏
  • 举报
回复
不用了要调用unmapviewoffile和closehandle的
王国凡 2006-12-19
  • 打赏
  • 举报
回复
>共享内存是用CreateFileMapping创建的。如果不释放,系统会自动释放吗?
-----------------------------------
系统不会自动释放
每次你 ::MapViewOfFile 后, 需要 ::UnmapViewOfFile , 所有程序不用了的时候, 需要用 CloseHandle 把共享内存关掉, 并把它置为 NULL .
蒋晟 2006-12-19
  • 打赏
  • 举报
回复
Not as long as all handles on the file mapping are closed eventually (doesn't matter by which component) and all views unmapped.
csuc20 2006-12-19
  • 打赏
  • 举报
回复
共享内存是用CreateFileMapping创建的。如果不释放,系统会自动释放吗?
jacklzw88 2006-12-19
  • 打赏
  • 举报
回复
释放是肯定要释放的,只是要知道到底还有没有必要给别的程序提供
王国凡 2006-12-19
  • 打赏
  • 举报
回复
搞个引用计数, 等所有程序都退出了再释放共享内存. 或者按你原来的方法, 每个程序退出时, 自己释放自己占用的内存 .

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧