免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: z1z4z7
打印 上一主题 下一主题

[C++] C++如何强制屏蔽内存错误 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2008-09-14 01:06 |只看该作者
原帖由 z1z4z7 于 2008-9-13 23:55 发表
还好,软件只是自用的:)

我觉得内存错误只是多种错误中的一种。重要的不是错误的种类,而是错误给系统带来的损害程度。在各种错误损害中,更严重的当属哪些造成了损害、但一时半刻还没反映出来、在将来的某 ...


你不用锁其实也可以解决这个问题吧,比如引入一个if_writing变量,你可以让读操作总是等待写操作完成。
简单的变量读写是很快的,应该不会影响性能吧。

论坛徽章:
0
22 [报告]
发表于 2008-09-14 01:50 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
23 [报告]
发表于 2008-09-14 02:11 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
24 [报告]
发表于 2008-09-14 02:23 |只看该作者
原帖由 z1z4z7 于 2008-9-13 23:55 发表
还好,软件只是自用的:)

我觉得内存错误只是多种错误中的一种。重要的不是错误的种类,而是错误给系统带来的损害程度。在各种错误损害中,更严重的当属哪些造成了损害、但一时半刻还没反映出来、在将来的某 ...


文笔还不错,想必代码也难看不了

但是这也不是放任竞争的借口。我的建议仍然是:用锁消除竞争。

论坛徽章:
0
25 [报告]
发表于 2008-09-14 09:43 |只看该作者
如果是CGI程序,100万次出错1次可接受吧,只是叫用户重新刷新下页面的事
一般SIGSEGV的处理都用longjmp来处理,如果出错,恢复栈到出错前。我不知道STL用的内存是否是栈内存,可能堆内存吧,这是SIGSEGV处理不了的,栈恢复了,堆上数据还是很乱。以前研究SIGSEGV的处理是为了在出错时保存已经计算的结果,下次可以接着算
另外LZ可能需要看看关于STL线呈安全性的文章,STL应当做了线程安全性的考虑,不然STL也太费了

论坛徽章:
0
26 [报告]
发表于 2008-09-14 10:02 |只看该作者
原帖由 reiase 于 2008-9-14 09:43 发表
如果是CGI程序,100万次出错1次可接受吧,只是叫用户重新刷新下页面的事
一般SIGSEGV的处理都用longjmp来处理,如果出错,恢复栈到出错前。我不知道STL用的内存是否是栈内存,可能堆内存吧,这是SIGSEGV处理不 ...


栈内存就可恢复吗?
SIGSEGV最合适的处理方式就是dump内存然后程序退出

[ 本帖最后由 ytl 于 2008-9-14 10:04 编辑 ]

论坛徽章:
0
27 [报告]
发表于 2008-09-14 10:16 |只看该作者
原帖由 ytl 于 2008-9-14 10:02 发表


栈内存就可恢复吗?
SIGSEGV最合适的处理方式就是dump内存然后程序退出


可以吧,前提是出错前用setjmp保存了栈的信息,出错后用longjmp跳回setjmp处,然后当作期间什么都没发生

论坛徽章:
0
28 [报告]
发表于 2008-09-14 10:26 |只看该作者
原帖由 reiase 于 2008-9-14 10:16 发表


可以吧,前提是出错前用setjmp保存了栈的信息,出错后用longjmp跳回setjmp处,然后当作期间什么都没发生


setjmp保存的应该仅仅是stack frame信息,而栈里面的内容并没有保存
再说如果仅仅错误的访问了栈上内存(栈溢出除外),并不会触发SIGSEGV
所以setjmp对SIGSEGV没有修复作用,它只是改变了执行流程

论坛徽章:
0
29 [报告]
发表于 2008-09-14 11:53 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
30 [报告]
发表于 2008-09-14 12:06 |只看该作者
还是换成正规解决方法吧,你这是苟延残喘的做法。

修改头文件声明肯定行不通的。多线程下每个线程有一个_pxcptinfoptrs对象,必须用函数来获取。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP