免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
0
1 [报告]
发表于 2008-09-13 10:47 |显示全部楼层
可以捕获并处理SIGSEGV

论坛徽章:
0
2 [报告]
发表于 2008-09-13 19:04 |显示全部楼层
原帖由 blizzard213 于 2008-9-13 18:36 发表


这样算不算严重逻辑错误?

是怎样的读写呢?

有的程序不到一秒就可以读写100w次

一秒100万次系统调用,OMG

论坛徽章:
0
3 [报告]
发表于 2008-09-13 19:48 |显示全部楼层
原帖由 timespace 于 2008-9-13 19:26 发表


blizzard213没说是每秒100w系统调用吧,是“不到一秒就可以读写100w次 ”

理解错了,理解成读写文件了

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

论坛徽章:
0
5 [报告]
发表于 2008-09-14 10:16 |显示全部楼层
原帖由 ytl 于 2008-9-14 10:02 发表


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


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

论坛徽章:
0
6 [报告]
发表于 2008-09-14 12:09 |显示全部楼层
原帖由 z1z4z7 于 2008-9-14 11:53 发表
我是用longjmp跳回到setjmp点。栈内容可以保存。

stl是堆内存,但由于读写冲突时可以保证写正确执行而读不保证,所以堆内存不会受到破坏。

其实就只是“读取”堆内存,读取错误就longjmp一次。

现在问 ...

win平台阿...貌似对signal的支持仅出于对POSIX的支持。
LZ是否可以考虑从win的消息队列机制和win的异常机制出发解决问题呢

另外,ytl能讲下SIGSEGV的触发机制吗,谢了

论坛徽章:
0
7 [报告]
发表于 2008-09-16 07:44 |显示全部楼层
原帖由 z1z4z7 于 2008-9-15 21:26 发表
用错误的办法解决错误的问题,不就像用负号修理负数,或者雇佣戴墨镜的人对付欠债10年不还的人。

本来是釜底抽薪、把错误的根源连泥带水决然挖出的好办法,然而,没想到大伙立场如此坚定地反对。

罢了。罢 ...


工程吗,难看点无所谓。即便选了最烂的框架,到时候你也得给人家在这个烂框架下把东西搞出来,而不是对烂框架指手画脚。
最初netscap的Linux还一直带着内存泄露问题发布呢,要用户自己搞个内存回收器辅助回收内存。让自己恶心的东西早点搞出来脱手就是了

论坛徽章:
0
8 [报告]
发表于 2008-09-17 21:33 |显示全部楼层
原帖由 雨过白鹭洲 于 2008-9-17 21:16 发表
改写程序是正道


正道就是忽悠人的

论坛徽章:
0
9 [报告]
发表于 2008-09-21 20:10 |显示全部楼层
其实LZ是来找一种工程上的解决方案的,不是接受哲学与方法论上的批判的
帖子到最后总会变味很严重

论坛徽章:
0
10 [报告]
发表于 2008-09-21 21:27 |显示全部楼层
原帖由 ytl 于 2008-9-21 20:34 发表


批判的就是他所谓的工程方案,因为那不是专业的方案


咱说啥好,
我说"批判"是为了夸大事实,突出我不喜欢的一点——很多回帖指责LZ设计问题而不是给出积极的解决方案,这种设计理念上的争吵比较无聊
你倒是真不客气,还当真是对LZ进行“批判”
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP