首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

一个让系统死机的C语言有关问题,调试不出来啊

2012-02-12 
一个让系统死机的C语言问题,调试不出来啊~~在DOS下用Borlandc++3.1写的一段C代码,发现有时运行到那就死机(

一个让系统死机的C语言问题,调试不出来啊~~
在DOS下用Borlandc++3.1写的一段C代码,发现有时运行到那就死机(是有时,不是总是),我那段代码只有给几个浮点型(double)变量赋值,而且没有采用指针,都是局部变量,居然会死机,偶尔重起。后来我加了个printf( "%lf\n ",   1.0   );居然显示出乱码,真的不知道该怎么办了,请教下高人,究竟是什么原因?有人说是栈不够了,是这样吗?DOS下堆栈不够也会有提示啊。

[解决办法]
看看有没有特别大的局部变量的数组。
[解决办法]
错误可能在其他部分的代码。
[解决办法]
是不是运行的时候有数据溢出,有没有采用表示范围更广的数据类型试试
[解决办法]
传说中的二分法

还有dos下的数据段只有64k哦
[解决办法]
不贴代码是很难解决的,
这点代码应该对你公司没有什么损害。
不会侵权的。

[解决办法]
实模式下堆栈指针sp是16位的,只能寻址64k地址范围,一旦堆栈向下溢出就会回绕,指向不确定位置。
很多情况都会造成堆栈下溢,比如大的局部变量数组、函数递归调用,调用栈过深等。

还有就是数组越界问题。当对局部数组变量赋值时如果不做边界检查,数据写到数组边界之外,会覆盖掉其他局部变量、函数返回地址及上层调用栈。这种情况下程序崩溃几乎是必然发生的。

热点排行