程序中加入一些代码后,旗舰版闪退。取消代码后正常。dmp文件如附件。代码编译没有问题,通过。但加载在图表中就闪退,代码如下,请帮忙看看是什么问题。
While (...)
{
...
Else If(iTemp == 5)
{
If(Low[trPos4] <= Low)
{
TrendType = 3;
Break;
}
If(High[trPos5] < High[trPos3])
{
If(tmpHighPos == 0)
{
tmpHighPos = trPos5;
tmpLowPos = trPos4;
}
Else
{
If(High[trPos5] >= High[tmpHighPos])
tmpHighPos = trPos5;
If(Low[trPos4] <= Low[tmpLowPos])
{
tmpHighPos = trPos5;
tmpLowPos = trPos4;
}
}
trPos4 = -1;
trPos5 = -1;
iTemp = 3;
}
Else
{
If(tmpHighPos > 0)
trPos4 = tmpLowPos;
If(Low[trPos4] <= Low[trPos2])
{
trPos1 = trPos3;
trPos2 = trPos4;
trPos3 = trPos5;
trPos4 = -1;
trPos5 = -1;
iTemp = 3;
}
tmpHighPos = 0;
}
}
...
}
多半是while死循环内存溢出了
你估算一下循环次数上限,然后用for循环替换while试试,估计就不会闪退了
如果确实是死循环导致的,那就需要你自己推敲一下循环逻辑问题了。
谢谢!暂时发现问题出在下面的语句:
TrendType = 3;
其中TrendType 是NumericSeries类型。在增加这段语句之前的版本中,这种赋值没有问题,程序正常。现在用Numeric类型替换,就没有闪退问题了。
还是不明白其中缘由,需要再琢磨琢磨。