一个让系统死机的C语言问题,调试不出来啊~~
在DOS下用Borlandc++3.1写的一段C代码,发现有时运行到那就死机(是有时,不是总是),我那段代码只有给几个浮点型(double)变量赋值,而且没有采用指针,都是局部变量,居然会死机,偶尔重起。后来我加了个printf( "%lf\n ", 1.0 );居然显示出乱码,真的不知道该怎么办了,请教下高人,究竟是什么原因?有人说是栈不够了,是这样吗?DOS下堆栈不够也会有提示啊。
[解决办法]
看看有没有特别大的局部变量的数组。
[解决办法]
错误可能在其他部分的代码。
[解决办法]
是不是运行的时候有数据溢出,有没有采用表示范围更广的数据类型试试
[解决办法]
传说中的二分法
还有dos下的数据段只有64k哦
[解决办法]
不贴代码是很难解决的,
这点代码应该对你公司没有什么损害。
不会侵权的。
[解决办法]
实模式下堆栈指针sp是16位的,只能寻址64k地址范围,一旦堆栈向下溢出就会回绕,指向不确定位置。
很多情况都会造成堆栈下溢,比如大的局部变量数组、函数递归调用,调用栈过深等。
还有就是数组越界问题。当对局部数组变量赋值时如果不做边界检查,数据写到数组边界之外,会覆盖掉其他局部变量、函数返回地址及上层调用栈。这种情况下程序崩溃几乎是必然发生的。