Падает МТ (снова DLL) - вопрос к разработчикам

 

Можно кто из разработчиков МТ пояснит. Что не так?


Есть метод manegment класса:


double* test::test1(void)
{
array<double>^ _arr = gcnew array<double>{1,2,3}; //.net array
double* _ret = new double[_arr->Length];

for (int i=0; i < _arr->Length;i++)
{
_ret[i] = _arr[i];
}

return _ret;
}


Для того, чтобы к управляемому классу обратиться с МТ делаем обертку:


NEURODLL_API char* __stdcall test11(double *out_array)
{

double* _arr = test.test1();

for (int i = 0; i < 3; i++)
{
out_array[i] = _arr[i];
}

delete (_arr);

return _ret;
}


в МТ это добро объявляем как:


string test11(double& arr0[]);


Так вот, в случае когда out_array[i] = 0.1; - все ок,

в случае когда out_array[i] = _arr[i];


МТ тихо падает. Что не так? Область памяти под массив out_array выделена в .mq4 скрипте.


double _arr[];
ArrayResize(_arr,3);

string ret = test11(_arr,3);


Значит память поднего выделена. Почему падает?