ArrayInitialize function internal error - MT4 вылетает (пример кода)

 
Добрый день

Уважаемые разработчики, обращался к вам в пятницу со страницы Ошибки и пожелания ("Ошибки и пожелания") но не получил ответа.

В последнем билде МТ4 есть похоже проблема с адресацией многомерных массивов - то ли области памяти не хватает, то ли стек переполняется.

Вот пример crash-test кода:

#property indicator_chart_window
#property indicator_buffers 6

double PointStart[], PointEnd[], EnterUp1[], EnterUp2[], EnterDn1[], EnterDn2[];
double Channel[][5]; 
double DayStochastic[];

int InitChart()
{
   IndicatorBuffers(6);
   SetIndexStyle(0,DRAW_ARROW);
   SetIndexStyle(1,DRAW_ARROW);
   SetIndexStyle(2,DRAW_ARROW);
   SetIndexStyle(3,DRAW_ARROW);
   SetIndexStyle(4,DRAW_ARROW);
   SetIndexStyle(5,DRAW_ARROW);

   ArrayInitialize(PointStart,0);
   ArrayInitialize(PointEnd,0);
   ArrayInitialize(EnterUp1,0);
   ArrayInitialize(EnterUp2,0);
   ArrayInitialize(EnterDn1,0);
   ArrayInitialize(EnterDn2,0);

   SetIndexBuffer(0,PointStart);
   SetIndexBuffer(1,PointEnd);
   SetIndexBuffer(2,EnterUp1);
   SetIndexBuffer(3,EnterUp2);
   SetIndexBuffer(4,EnterDn1);
   SetIndexBuffer(5,EnterDn2);
   
//----
   SetIndexEmptyValue(0,0);
   SetIndexEmptyValue(1,0);
   SetIndexEmptyValue(2,0);
   SetIndexEmptyValue(3,0);
   SetIndexEmptyValue(4,0);
   SetIndexEmptyValue(5,0);

   Comment("");
  
//----
   return(0);
}

int init()
  {
    InitChart();
    return(0);
  }
int start()
  {
  }
//+------------------------------------------------------------------+



На моем компьютере если его навесить на любой график, в логах вижу ArrayInitialize function internal error, а при попытке сменить таймфрейм MT4 просто сообщает об исключении We apologize for the crash occured ну и так далее.

Юзаю Windows XP Pro SP2

Где грабли?

 
Да, точно - вылетает при смене таймфрейма.
Завтра мы исправим эту ошибку, но обновление билда будет только 1 июля.
Спасибо
 
но обновление билда будет только 1 июля.


Ренат, если не сложно - можете патченный terminal.exe мне по почте скинуть? Работа из-за этой ошибки стоит
 
Ренат, если не сложно - можете патченный terminal.exe мне по почте скинуть? Работа из-за этой ошибки стоит

проблема вот в чём. Вы пытаетесь инициализировать пустой массив (инициализация стоит до назначения индексных буферов) поэтому и выдаётся "внутренняя ошибка при инициализации".
во-вторых, бесполезно инициализировать индексные массивы в функции init. индикатор ещё не считался, поэтому его буфера ещё не распределены. при первом распределении они будут автоматически инициализированы "пустыми значениями".
поэтому уберите строки с инициализацией массивов и работайте дальше, не дожидаясь следующего билда.
причину креша мы нашли. спасибо.
 
уберите строки с инициализацией массивов и работайте дальше, не дожидаясь следующего билда.причину креша мы нашли. спасибо.

Слава, спасибо за комментарий. Ок, рад был помочь