Выделить память под массив в dll

 

Разработчики MT, возможно ли выделить память в dll для массива каким-нибудь MemAlloc например


#import "indicator.dll"
bool uShow(int ColvoBars, double &Array[]);
#import


int start()
{
  double array[]

  ArrayResize(array, (Bars/2)*6); // этого тут я нехочу делать

  bool x = uShow(Bars, array);

}

 
lis >>:

Разработчики MT, возможно ли выделить память в dll для массива каким-нибудь MemAlloc например


#import "indicator.dll"
bool uShow(int ColvoBars, double &Array[]);
#import


int start()
{
  double array[]

  ArrayResize(array, (Bars/2)*6); // этого тут я нехочу делать

  bool x = uShow(Bars, array);

}

а можно узнать  почему ? не хотите

---

Вы хотите выделять память в DLL  т е снизу, а использовать ее 'сверху'  

вместо того что бы выделить память сверху и использовать ее снизу

DLL тут можно рассматривать как нижний уровень...

--

используя возможно 'некоторые трюковые приемы программирования'

можно получить некоторую вероятность  ,  что работать будет - некий прием

но такие вещи не поддерживаемые  разработчиком не обязательно сработают в следующих релизах

как пример: одно время программируя для MSDOS использовал недокументированные функции

в одной из следующих версий DOS, одна из функций  перестала работать

 

Потому-что на выходе размер массива будет разный. Зачем сразу выделять в MQ4 например массив под 1000 баров, если в результате действий может получится массив из 140 баров.

В dll передается указатель на сам массив, я не знаю как поведет себя MT4 если выделить память под массив из dll, примет ли он во внимание что память выделена.

поэту и спрашиваю разработчиков, как там у них работа с памятью ведется.

 
А что Вам мешает расчитать необходимый размер, а потом сделать Resize на нужное значение? Память лучше всего выделять штатными средствами MQL4.
 
Renat >>:
А что Вам мешает расчитать необходимый размер, а потом сделать Resize на нужное значение? Память лучше всего выделять штатными средствами MQL4.

У меня весь код экспертов, и индикаторов в dll находится (не нравится ваш тестер, использую свой), вот хочу убрать лишний код из MQ4, коснулся вопрос использования памяти.

Я понимаю что штатными средствами лучше, ну хотел бы знать альтернативу (мне проще код писать) если она вообще или забить на это дело и оставить как есть???

 
lis писал(а) >>

У меня весь код экспертов, и индикаторов в dll находится (не нравится ваш тестер, использую свой), вот хочу убрать лишний код из MQ4, коснулся вопрос использования памяти.

Я понимаю что штатными средствами лучше, ну хотел бы знать альтернативу (мне проще код писать) если она вообще или забить на это дело и оставить как есть???

Есть такое слово умное - архитектура памяти, так вот - как разница если в МТ4 она собственная ? Смысл лезть в МТ - в инсталляции прилагается пример DLLSample - там все прекрасно показано как делается передача массивов, констант и переменных - я таким образом массивы туда-обратно с константами вперемешку гонял между МТ и кодировал для Матлаба через свою DLL - делал а потом сверял с матлабом библиотеку вейвлетов.

Могу сказать что если во входных параметрах массивы вперемешку с обычными переменными - то там важен порядок, точнее выравнивание аргументов, и под отладчиком DLL-ки видно непонятку с передачей сложных параметров. Все прекрасно и архи-шустро работает если заниматься менеджментом только собственно выделенной памяти. Пишется интерфейсный MQL файл с прописанной в нем DLL-кой обмена данными и далее можно лопатить выкаченные данные хоть на кластере силиконов в Сан-Диего .. ну если те пустят ;-)