Я создаю индикатор, который распознает формы свечей.
Для этого я создал отдельный 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()
, там все еще есть свечи, и я все еще получаю ошибку утечки.
Почему?