保存桌面快捷方式 - - 设为首页 - 手机版
凹丫丫旗下网站:四字成语大全 - 故事大全 - 范文大全
您现在的位置: 范文大全 >> 理工论文 >> 计算机信息技术 >> 正文

为何出现“非法操作


a[5]=0;

}

大家知道,C语言不检查数组下标越界,该程序编译可通过。执行时引发上述错误,这是因为语句int a[5]只定义了a[0]a[4]a[5]访问的地址不属于程序的地址空间。要特别注意数组下标,除了上述原因外,它的错误还往往伴随着逻辑错误(符合语法但得不到正确的结果)。

 

2.未初始化的指针

观察以下程序:

void main()

{

int *a;

*a=0;

}

语句int *a

定义了一个指针,a中存放的只是一个地址,它是一个随机数,极可能指向其它进程的地址空间。对该地址进行读写操作,也极可能引发上述错误。修改的办法是再定义一个整型变量,并将它的地址赋给指针变量a。纯DOS操作系统允许程序对它本身以外的地址进行操作。我在DOS下编程时,曾因忘了初始化指针,而将整个编译器搞得面目全非。

3.栈溢出

这是最不易察觉的一点。我是在编写一个图象处理软件时遇到的,当时真是百思不得其解:

#include<stdio.h>

void func()

《为何出现“非法操作(第3页)》
本文链接地址:http://www.oyaya.net/fanwen/view/142123.html

★温馨提示:你可以返回到 计算机信息技术 也可以利用本站页顶的站内搜索功能查找你想要的文章。