我正在创建一个识别烛台形状的指标。
为此,我创建了一个单独class Candlestick
的包含在指标文件中的文件。
问题是我遭受内存泄漏。
我是指针的新手,在阅读/观看了很多之后,我似乎仍然错过了一些东西。
这是指标类。课程的内容Candlestick
无关紧要,因此我将其省略。
Candlestick *candles[];
void OnDeinit(const int reason)
{
for(int i = 0; i < ArraySize(candles); i++ ){
delete(candles[i]);
}
}
int OnCalculate(args here)
{
ArrayResize(candles, Bars);
for(int i = MathMax(Bars-2-IndicatorCounted(), 1); i >= 0; i--)
{
candles[i] = new Candlestick();
// Do stuff with this candle (and other candles) here e.g.
if(candles[i+1].type == BULLISH) Print("Last candle was Bullish");
}
}
当我这样做时,我得到内存泄漏错误。看来我需要删除指向该动态数组中蜡烛的指针。问题是,何时何地?因为我在for(){...}
循环的下一次迭代中需要它们。所以我不能在那里删除它。
当我在OnDeinit()
函数中删除它时,仍然有蜡烛,我仍然得到泄漏错误。
怎么来的?