您现在的位置: 范文先生网 >> 理工论文 >> 计算机信息技术 >> 正文

为何出现“非法操作

时间:2007-1-18栏目:计算机信息技术

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()

上一页  [1] [2] [3] [4] [5] 下一页

下页更精彩:1 2 3 4 下一页