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

为何出现“非法操作


{

    int  a[300000];

    printf("Now Call Functions");

}

void main()

{

    func();

}

程序运行时,系统在栈中为局部变量开辟空间。局部变量有很多好处,但是必须保证栈的空间足够。该程序定义了长为300000的整数数组局部变量,它超出了栈的大小。通过修改数组的长度,看是否会出现“非法操作”,得知我所用的系统(Windows NT4)在缺省条件下,栈的大小在200000300000之间。另外,使用递归不当,也会引起栈的溢出。解决的办法一般并非将局部变量该为全局变量(尽管实际用到的内存再大,Windows也能支持,但从效率来说一般不这样做),而是使用动态分配内存技术,从“堆”中分配内存。将语句int  a[300000] 改为 int  a=new int[300000],然后仍然a看成长为300000的数组使用。

 

最后提醒大家,编写程序后,编译运行前存盘,做到“有备无患”。

 

                              

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

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