DLL - Возврат(модификация) указателя на массив ?

 

Есть DLL функция с динамическим выделением памяти.

MQL

int a[];
int size[1];
int status = dllFunc(a, size); // модификация указателя 'a'
Print("Last value:",a[size[0]-1]);
status = dllFuncFreeMem(a);

Подскажите (покажите) простенький код с модификацией указателя. (С++)

Заранее благодарю.

 

нельзя модифицировать сам указатель. Но то что внутри можно.

Зачем вам "а"? Чтобы опять передать в DLL?

 
Чтоб напрямую через переменную mql обращаться к памяти (без дополнительного вызова dll функций). Проблема в том, что размер возвращаемого массива заранее неизвестен.
 
JavaDev >>:
Чтоб напрямую через переменную mql обращаться к памяти (без дополнительного вызова dll фунций). Проблема в том, что размер возвращаемого массива заранее неизвестен.

Судя по всему, размер будет содержаться в size[0].

Кстати, а это тема.

 
JavaDev писал(а) >>
Чтоб напрямую через переменную mql обращаться к памяти (без дополнительного вызова dll функций). Проблема в том, что размер возвращаемого массива заранее неизвестен.

Мы сможете только в лучшем случае получить данные из DLL. Но выделение самой памяти придется делать в MQL .

Например вы выделяете в MQL массив размером не ноль, а скажем 100. Предаете его в DLL, там модифицируете в соответствии с его размером также переданном туда. Но выделять памать в DLL нельзя.

Причем даже если вам надо вернуть один инт это можно сделать только через массив. Или через возврат самой функции. Параметры не массивы модифицировать нельзя.

 
SProgrammer >>:

Но выделять памать в DLL нельзя.

Это еще почему?

 
TheXpert писал(а) >>

Это еще почему?

Что почему? :)

 
SProgrammer >>:

Что почему? :)

Гм, зачем дурака из себя строить? Вопрос предельно конкретный.

 
TheXpert писал(а) >>

Гм, зачем дурака из себя строить? Вопрос предельно конкретный.

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

Тем более что я ответил в начале предельно понятно.

 
JavaDev писал(а) >>
Проблема в том, что размер возвращаемого массива заранее неизвестен.

хотите чтоб один процесс выделил память другой освободил ? Почти нереально.

Действительно - не валяйте дурака, пишите проц которая ответит mql сколько

памяти нужно, та ее распределит и дело в шляпе. Все ост - пустой @%@низм.

 
JavaDev >>:
Чтоб напрямую через переменную mql обращаться к памяти (без дополнительного вызова dll функций). Проблема в том, что размер возвращаемого массива заранее неизвестен.

Эксперементировать надо, так как я замечал некоторую непонятную ситуацию с массивами. Сейчас не припомню, что там было. К тому же, зачем выделять память через DLL, а потом еще и обращаться к ней не через DLL? Не легче ли выделить память под массив средствами mql?