免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
0
31 [报告]
发表于 2008-09-14 12:09 |只看该作者
原帖由 z1z4z7 于 2008-9-14 11:53 发表
我是用longjmp跳回到setjmp点。栈内容可以保存。

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

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

现在问 ...

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

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

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

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

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


按照我个人的理解,操作系统借助于CPU的内存保护功能(所谓保护模式),能够捕捉到非法内存访问。一旦出现非法内存访问,OS就会向进程发送SIGSEGV。
内存的权限保护一般是以段为单位的,所以并不是任何非法访问都能被系统检测到,例如数组越界。
多线程内存访问的竞争条件不在OS的内存范围之内。

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

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

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

论坛徽章:
11
技术图书徽章
日期:2014-03-01 14:44:34天蝎座
日期:2014-05-21 22:11:59金牛座
日期:2014-05-30 17:06:14
35 [报告]
发表于 2008-09-14 13:08 |只看该作者
原帖由 ytl 于 2008-9-14 12:28 发表


按照我个人的理解,操作系统借助于CPU的内存保护功能(所谓保护模式),能够捕捉到非法内存访问。一旦出现非法内存访问,OS就会向进程发送SIGSEGV。
内存的权限保护一般是以段为单位的,所以并不是任何非法 ...


目前CPU内存保护都是页保护机制,段远远不够

论坛徽章:
0
36 [报告]
发表于 2008-09-14 13:57 |只看该作者
原帖由 timespace 于 2008-9-14 13:08 发表


目前CPU内存保护都是页保护机制,段远远不够


CPU内是页保护机制。我的意思是对于一个进程地址空间,一个段内的所有页面的默认属性是相同的

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

论坛徽章:
0
38 [报告]
发表于 2008-09-15 09:32 |只看该作者
真搞笑.. 这个都处理不好还写什么c++程序
建议你把用数组的地方全换成vector 用[]操作的地方全换成 vector.at(x) 就能产生异常了
或者换种脚本语言来写.. 都会产生异常的..

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

论坛徽章:
0
40 [报告]
发表于 2008-09-15 10:50 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP