为何出现“非法操作.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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)

137****3851 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档