Здравствуйте, Аноним, Вы писали:
А>У меня есть функия в DLL, возвращающая некий массив. Так как до вызова этой функции размер неизвестен, а надо возвращать float*, то я завожу некий статический буфер максимального размера, заполняю его, возвращаю указатель на него и размер.
А>ПРОБЛЕМЫ — пользователь запомининает этот указатель, а после вызова этой функции в другой раз эти данные затираются. А>Еще проблема — многопоточность — этим все сказано
А>Так вот вопрос — как поэлегантнее возвращать массив, чтобы память выделялась и освобождалась в DLL и не было вышеуказанных проблем. А>STL не предлагать
А>СПАСИБО
Принимай в качестве параметра функции указатель на внешний объект(класс типа связанного списка, СObjList экземпляр например в MFC), внутри работай с ним, типа Add|Remove item-s,
потом возвращай указатель на этот же объект. Если ни MFC ни STL, то сделай сам связный список из объектов и делай там те же ADD|Remove — ...После этого ты на время пребывания внутри функции делаешь с таким динамическим массивом что угодно, пользователь отдыхает, так как для него будет доступен только указатель на список полностью контролируемый тобой. Что захочешь то и нафасуешь.