- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
为何出现非法操作徐淼华中国科学技术大学少年班 9700230026
在使用电脑的过程中, 尤其是编程的时候, 经常会遇到弹出如图所示
的对话框,提示软件进行了非法操作 图点击了详细资料后的对
话框此时如果点击详细资料,对话框扩大窗口,给出了寄存器的值,但是一般人看不明白; 而如果点击调试, 它将调用 ++或之类的安装在系统中的编译器, 并在编译器中显示程序的汇编码, 更是让人头大一圈;若点击关闭, 则会将内存中的相关数据都丢弃很多时候这些数据
是有用的,非常可惜。 引起弹出此对话框的原因是内存出错。
内存质量不好,不稳定,某些数据无端的改变,当然被认为是非法操
作。 这里讨论的是软件特别是自己编写的小程序是如何引起错
误的。 9 中,不必关心内存模式、地址转换、 64 的代码段和数
据段,因为地址和内存都放在线形的 32 位内存空间中。 每个应
用程序都可看见
4 的线形地址空间,其中最开始的 4 由操作系统保留,
剩下的不足 2 的空间属于应用程序私有空间。
要强调的是,在
4 到 2 之间的非保留空间是完全私有的。
每个进程都可有自己
私有的地址空间,而且与其他进程的地址空间是完全无关的。
利
用处理器的页映射能力, 操作系统可为每个进程提供独立的从逻辑地
址到物理内存或分页文件的映射, 使一个进程的地址空间对另一个进
程完全不可见。
编程时,若一个进程程序访问了它的地址空间
外的地址, 9 就会弹出上述对话框。
具体有以下几个原因 1.数
组下标越界观察以下程序 #{[5];
[5]=0;}
大家知道,语言不检查
数组下标越界,该程序编译可通过。
执行时引发上述错误,这
是因为语句 [5] 只定义了 [0] 至[4]
,[5]
访问的地址不属于程序的地址
空间。
要特别注意数组下标,除了上述原因外,它的错误还往
往伴随着逻辑错误符合语法但得不到正确的结果。
2.未初始化
的指针观察以下程序 {*;*=0;}
语句 * 定义了一个指针,中存放的只是
一个地址,它是一个随机数,极可能指向其它进程的地址空间。
对该地址进行读写操作,也极可能引发上述错误。
修改的办法
是再定义一个整型变量,并将它的地址赋给指针变量。
纯操作
系统允许程序对它本身以外的地址进行操作。
我在下编程时,
曾因忘了初始化指针,而将整个编译器搞得面目全非。
3.栈溢
出这是最不易察觉的一点。
我是在编写一个图象处理软件时遇
到的,当时真是百思不得其解 #
{[300000];;}{;}
程序运行时,
系统在栈中为局部变量开辟空间。
局部变量有很多好处,但是
必须保证栈的空间足够。
该程序定义了长为 300000 的整数数组
局部变量,它超出了栈的大小。
通过修改数组的长度,看是否
会出现非法操作,得知我所用的系统
4 在缺省条件下,栈的大小在
200000 至 300000 之间。
另外,使用递归不当,也会引起栈的
溢出。 解决的办法一般并非将局部变量该为全局变量尽管实际
用到的内存再大,也能支持,但从效率来说一般不这样做,而是使用
动态分配内存技术,从堆中分配内存。
将语句
[300000]
改为
=[300000]
,然后仍然看成长为
300000
的数组使用。
最后提醒
大家,编写程序后,编译运行前存盘,做到有备无患。
;
中国科学技术大学
230026 徐淼华 _@2632000,3,16
它是一只名叫“晶晶”的鸽子,它饿了。平常,那个人早就回来了,老远打响一个长长的呼哨,“晶晶”飞过去,落在他的肩上,那个人会抚摸它,从口袋里摸出一把稻谷或绿豆喂它。每当它飞向北山山谷从那里带回纸条,主人就会笑容满面,看完纸条后他会在地上翻一个斤斗,摸出一个闪亮的铁匣子塞进口里左右拉动,奇妙的声音就在这时发出来了。可现在,它正面临着孤独与饥寒。
它的主人是一个外号叫“麻雀”的人。
招工这件要命的事闹腾得他周身疲惫,结果对方还是摇头。“麻雀”必须投入最后的一搏,他长嘘了一口气,声音透出了沉重:“兄弟,这事只能你来帮我一把了。实在对不起,我舍不得你走,可有什么办法呢?人家居然看上你了 ”主人看着它,不再说话,眼里有了亮晶晶的东西。
第二天一早,主人把“晶晶”塞进一个暗而闷的硬纸盒,鸽子扑扑地挣扎,主人找来剪刀,给它挖了两个方方正正的透气窗,然后提着纸盒出门了,它不再听到主人的说话声。
它在剧烈晃荡的黑暗中不知过了多久,眼前突然变得明亮,“晶晶”本能地往后一坐,再猛地一弹,就箭一般射了出去。一个中年人的粗嗓门留在了它身后,一个小孩的哭泣声也留在了它身后。
“晶晶”一头扑进了无边无际的开阔与自由。这地方空气太冷太干了,它记得家乡的群山中有个美丽的湖,还有主人圆乎乎的黑脸。它越飞越高。
一早醒来,少了鸽子的叫声,他恨
原创力文档


文档评论(0)